Skip to content

Commit

Permalink
Merge "Add socket-level read timeout parameter"
Browse files Browse the repository at this point in the history
  • Loading branch information
Jenkins authored and openstack-gerrit committed Apr 24, 2015
2 parents 3105cdc + f5a473e commit ea6d2bf
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 5 deletions.
13 changes: 10 additions & 3 deletions swiftclient/client.py
Expand Up @@ -140,7 +140,8 @@ def encode_meta_headers(headers):

class HTTPConnection(object):
def __init__(self, url, proxy=None, cacert=None, insecure=False,
ssl_compression=False, default_user_agent=None):
ssl_compression=False, default_user_agent=None,
timeout=None):
"""
Make an HTTPConnection or HTTPSConnection
Expand All @@ -160,6 +161,8 @@ def __init__(self, url, proxy=None, cacert=None, insecure=False,
may be overridden on a per-request basis by
explicitly setting the user-agent header on
a call to request().
:param timeout: socket read timeout value, passed directly to
the requests library.
:raises ClientException: Unable to handle protocol scheme
"""
self.url = url
Expand Down Expand Up @@ -190,6 +193,8 @@ def __init__(self, url, proxy=None, cacert=None, insecure=False,
default_user_agent = \
'python-swiftclient-%s' % swiftclient_version.version_string
self.default_user_agent = default_user_agent
if timeout:
self.requests_args['timeout'] = timeout

def _request(self, *arg, **kwarg):
""" Final wrapper before requests call, to be patched in tests """
Expand Down Expand Up @@ -1155,7 +1160,7 @@ def __init__(self, authurl=None, user=None, key=None, retries=5,
starting_backoff=1, max_backoff=64, tenant_name=None,
os_options=None, auth_version="1", cacert=None,
insecure=False, ssl_compression=True,
retry_on_ratelimit=False):
retry_on_ratelimit=False, timeout=None):
"""
:param authurl: authentication URL
:param user: user name to authenticate as
Expand Down Expand Up @@ -1208,6 +1213,7 @@ def __init__(self, authurl=None, user=None, key=None, retries=5,
self.ssl_compression = ssl_compression
self.auth_end_time = 0
self.retry_on_ratelimit = retry_on_ratelimit
self.timeout = timeout

def close(self):
if (self.http_conn and isinstance(self.http_conn, tuple)
Expand All @@ -1231,7 +1237,8 @@ def http_connection(self, url=None):
return http_connection(url if url else self.url,
cacert=self.cacert,
insecure=self.insecure,
ssl_compression=self.ssl_compression)
ssl_compression=self.ssl_compression,
timeout=self.timeout)

def _add_response_dict(self, target_dict, kwargs):
if target_dict is not None and 'response_dict' in kwargs:
Expand Down
3 changes: 2 additions & 1 deletion tests/unit/test_swiftclient.py
Expand Up @@ -1464,7 +1464,8 @@ def read(self, *args, **kwargs):
return ''

def local_http_connection(url, proxy=None, cacert=None,
insecure=False, ssl_compression=True):
insecure=False, ssl_compression=True,
timeout=None):
parsed = urlparse(url)
return parsed, LocalConnection()

Expand Down
2 changes: 1 addition & 1 deletion tests/unit/utils.py
Expand Up @@ -220,7 +220,7 @@ def fake_http_connection(*args, **kwargs):
on_request = kwargs.get('on_request')

def wrapper(url, proxy=None, cacert=None, insecure=False,
ssl_compression=True):
ssl_compression=True, timeout=None):
if storage_url:
self.assertEqual(storage_url, url)

Expand Down

0 comments on commit ea6d2bf

Please sign in to comment.