Skip to content

Commit 307ba8e

Browse files
committed
Make HTTP parameters such as timeout configurable
1 parent 75c0ca5 commit 307ba8e

File tree

1 file changed

+27
-6
lines changed

1 file changed

+27
-6
lines changed

v3io/dataplane/transport/httpclient.py

Lines changed: 27 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,10 +22,11 @@
2222

2323
from . import abstract
2424

25+
_connection_timeout_seconds = 20
26+
_request_max_retries = 2
27+
2528

2629
class Transport(abstract.Transport):
27-
_connection_timeout_seconds = 20
28-
_request_max_retries = 2
2930

3031
def __init__(self, logger, endpoint=None, max_connections=None, timeout=None, verbosity=None):
3132
super(Transport, self).__init__(logger, endpoint, max_connections, timeout, verbosity)
@@ -46,6 +47,26 @@ def __init__(self, logger, endpoint=None, max_connections=None, timeout=None, ve
4647
)
4748
self._get_status_and_headers = self._get_status_and_headers_py3
4849

50+
@classmethod
51+
def get_connection_timeout(cls):
52+
global _connection_timeout_seconds
53+
return _connection_timeout_seconds
54+
55+
@classmethod
56+
def set_connection_timeout(cls, timeout):
57+
global _connection_timeout_seconds
58+
_connection_timeout_seconds = timeout
59+
60+
@classmethod
61+
def set_request_max_retries(cls, retries):
62+
global _request_max_retries
63+
_request_max_retries = retries
64+
65+
@classmethod
66+
def get_request_max_retries(cls):
67+
global _request_max_retries
68+
return _request_max_retries
69+
4970
def close(self):
5071
# Ignore redundant calls to close
5172
if not self._free_connections:
@@ -151,15 +172,15 @@ def _send_request_on_connection(self, request, connection):
151172
if is_body_seekable:
152173
starting_offset = request.body.tell()
153174

154-
retries_left = self._request_max_retries
175+
retries_left = Transport.get_request_max_retries()
155176
while True:
156177
try:
157178
connection.request(request.method, path, request.body, request.headers)
158179
break
159180
except self._send_request_exceptions as e:
160181
self._logger.debug_with(
161182
f"Disconnected while attempting to send request – "
162-
f"{retries_left} out of {self._request_max_retries} retries left.",
183+
f"{retries_left} out of {Transport.get_request_max_retries()} retries left.",
163184
e=type(e),
164185
e_msg=e,
165186
)
@@ -189,9 +210,9 @@ def _create_connections(self, num_connections, host, ssl_context):
189210

190211
def _create_connection(self, host, ssl_context):
191212
if ssl_context is None:
192-
return http.client.HTTPConnection(host, timeout=self._connection_timeout_seconds)
213+
return http.client.HTTPConnection(host, timeout=Transport.get_connection_timeout())
193214

194-
return http.client.HTTPSConnection(host, timeout=self._connection_timeout_seconds, context=ssl_context)
215+
return http.client.HTTPSConnection(host, timeout=Transport.get_connection_timeout(), context=ssl_context)
195216

196217
def _parse_endpoint(self, endpoint):
197218
if endpoint.startswith("http://"):

0 commit comments

Comments
 (0)