@@ -260,17 +260,22 @@ def make_request(self, method, request):
260
260
def get_elapsed ():
261
261
return time .time () - t0
262
262
263
+ def bound_retry_delay (attempt , proposed_delay ):
264
+ """bound delay (seconds) by [min_delay*1.5^(attempt-1), max_delay]
265
+ """
266
+ delay = int (proposed_delay )
267
+ delay = max (delay , self ._retry_delay_min * math .pow (1.5 , attempt - 1 ))
268
+ delay = min (delay , self ._retry_delay_max )
269
+ return delay
270
+
263
271
def extract_retry_delay (attempt ):
264
272
# encapsulate retry checks, returns None || delay-in-secs
265
273
# Retry IFF 429/503 code + Retry-After header set
266
274
http_code = getattr (self ._transport , "code" , None )
267
275
retry_after = getattr (self ._transport , "headers" , {}).get ("Retry-After" )
268
276
if http_code in [429 , 503 ] and retry_after :
269
277
# bound delay (seconds) by [min_delay*1.5^(attempt-1), max_delay]
270
- delay = int (retry_after )
271
- delay = max (delay , self ._retry_delay_min * math .pow (1.5 , attempt - 1 ))
272
- delay = min (delay , self ._retry_delay_max )
273
- return delay
278
+ return bound_retry_delay (attempt , int (retry_after ))
274
279
return None
275
280
276
281
def attempt_request (attempt ):
0 commit comments