@@ -260,17 +260,22 @@ def make_request(self, method, request):
260260def get_elapsed ():
261261return time .time ()- t0
262262
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+
263271def extract_retry_delay (attempt ):
264272# encapsulate retry checks, returns None || delay-in-secs
265273# Retry IFF 429/503 code + Retry-After header set
266274http_code = getattr (self ._transport ,"code" ,None )
267275retry_after = getattr (self ._transport ,"headers" , {}).get ("Retry-After" )
268276if http_code in [429 ,503 ]and retry_after :
269277# 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 ))
274279return None
275280
276281def attempt_request (attempt ):