File tree 1 file changed +4
-3
lines changed
1 file changed +4
-3
lines changed Original file line number Diff line number Diff line change 56
56
API_VERSTRING = "v1/"
57
57
58
58
class CountingBackoff (object ):
59
- def __init__ (self , maximum_retries = 10 , timeout_success_equivalent = None ):
60
- # type: (int, Optional[float]) -> None
59
+ def __init__ (self , maximum_retries = 10 , timeout_success_equivalent = None , delay_cap = 90.0 ):
60
+ # type: (int, Optional[float], float ) -> None
61
61
self .number_of_retries = 0
62
62
self .maximum_retries = maximum_retries
63
63
self .timeout_success_equivalent = timeout_success_equivalent
64
64
self .last_attempt_time = 0.0
65
+ self .delay_cap = delay_cap
65
66
66
67
def keep_going (self ):
67
68
# type: () -> bool
@@ -94,7 +95,7 @@ def fail(self):
94
95
# Exponential growth with ratio sqrt(2); compute random delay
95
96
# between x and 2x where x is growing exponentially
96
97
delay_scale = int (2 ** (self .number_of_retries / 2.0 - 1 )) + 1
97
- delay = delay_scale + random .randint (1 , delay_scale )
98
+ delay = min ( delay_scale + random .randint (1 , delay_scale ), delay_cap )
98
99
message = "Sleeping for %ss [max %s] before retrying." % (delay , delay_scale * 2 )
99
100
try :
100
101
logger .warning (message )
You can’t perform that action at this time.
0 commit comments