25
25
26
26
RETRY_AFTER_STATUS_CODES = frozenset ([429 , 500 , 501 , 502 , 503 , 504 , 505 , 506 , 507 , 509 , 510 , 511 , 512 ])
27
27
RETRY_ALLOWED_METHODS = frozenset (["GET" , "PUT" , "DELETE" , "POST" , "PATCH" ])
28
+ # apply sane default for calls to datadog API which has 60s timeout
29
+ DEFAULT_TIMEOUT = 55
30
+ DEFAULT_IDLE_CONN_MS = 55000
28
31
29
32
30
33
class ClientRetry (urllib3 .util .Retry ):
@@ -140,7 +143,7 @@ def request(
140
143
post_params = post_params or {}
141
144
headers = headers or {}
142
145
143
- timeout = None
146
+ timeout = urllib3 . Timeout ( total = DEFAULT_TIMEOUT )
144
147
if request_timeout :
145
148
if isinstance (request_timeout , (int , float )):
146
149
timeout = urllib3 .Timeout (total = request_timeout )
@@ -240,7 +243,13 @@ def __init__(self, configuration):
240
243
proxy = None
241
244
if configuration .proxy :
242
245
proxy = aiosonic .Proxy (configuration .proxy , configuration .proxy_headers )
243
- self ._client = aiosonic .HTTPClient (proxy = proxy , verify_ssl = configuration .verify_ssl )
246
+ pool_configs = {
247
+ ":default" : aiosonic .PoolConfig (
248
+ max_conn_idle_ms = DEFAULT_IDLE_CONN_MS
249
+ )
250
+ }
251
+ connector = aiosonic .TCPConnector (pool_configs = pool_configs )
252
+ self ._client = aiosonic .HTTPClient (connector = connector , proxy = proxy , verify_ssl = configuration .verify_ssl )
244
253
self ._configuration = configuration
245
254
246
255
def close (self ):
@@ -290,13 +299,13 @@ async def request(
290
299
(connection, read) timeouts.
291
300
"""
292
301
assert not post_params , "not supported for now"
302
+ from aiosonic .timeout import Timeouts # type: ignore
303
+ timeout = Timeouts (request_timeout = DEFAULT_TIMEOUT )
293
304
if request_timeout is not None :
294
- from aiosonic .timeout import Timeouts # type: ignore
295
-
296
305
if isinstance (request_timeout , (int , float )):
297
- request_timeout = Timeouts (request_timeout = request_timeout )
306
+ timeout = Timeouts (request_timeout = request_timeout )
298
307
else :
299
- request_timeout = Timeouts (sock_connect = request_timeout [0 ], sock_read = request_timeout [1 ])
308
+ timeout = Timeouts (sock_connect = request_timeout [0 ], sock_read = request_timeout [1 ])
300
309
request_body = None
301
310
if (
302
311
"Content-Type" not in headers
@@ -317,7 +326,7 @@ async def request(
317
326
counter = 0
318
327
while True :
319
328
response = await self ._client .request (
320
- url , method , headers , query_params , request_body , timeouts = request_timeout
329
+ url , method , headers , query_params , request_body , timeouts = timeout
321
330
)
322
331
retry = self ._retry (method , response , counter )
323
332
if not retry :
0 commit comments