88MAX_RETRIES = 3
99RETRY_BACKOFF_FACTOR = 1
1010RETRY_BACKOFF_JITTER = 3
11+ RETRY_BACKOFF_MAX = 30
1112
1213
1314class Credentials :
@@ -24,6 +25,7 @@ def __init__(
2425 max_retries = None ,
2526 retry_backoff_factor = None ,
2627 retry_backoff_jitter = None ,
28+ retry_backoff_max = None ,
2729 ):
2830 self .region = None
2931 self .access_key = access_key
@@ -35,6 +37,7 @@ def __init__(
3537 self .max_retries = max_retries
3638 self .retry_backoff_factor = retry_backoff_factor
3739 self .retry_backoff_jitter = retry_backoff_jitter
40+ self .retry_backoff_max = retry_backoff_max
3841
3942 if profile is None :
4043 profile = os .environ .get ("OSC_PROFILE" )
@@ -70,6 +73,8 @@ def __init__(
7073 self .retry_backoff_factor = RETRY_BACKOFF_FACTOR
7174 if self .retry_backoff_jitter is None :
7275 self .retry_backoff_jitter = RETRY_BACKOFF_JITTER
76+ if self .retry_backoff_max is None :
77+ self .retry_backoff_max = RETRY_BACKOFF_MAX
7378
7479 self .check_options ()
7580
@@ -106,6 +111,10 @@ def load_credentials_from_file(self, profile, file_path):
106111 if retry_backoff_jitter is not None :
107112 self .retry_backoff_jitter = retry_backoff_jitter
108113
114+ retry_backoff_max = profile .get ("retry_backoff_max" )
115+ if retry_backoff_max is not None :
116+ self .retry_backoff_max = retry_backoff_max
117+
109118 except IOError :
110119 pass
111120
@@ -128,6 +137,9 @@ def load_credentials_from_env(self):
128137 retry_backoff_jitter = os .environ .get ("OSC_RETRY_BACKOFF_JITTER" )
129138 if retry_backoff_jitter is not None :
130139 self .retry_backoff_factor = float (retry_backoff_jitter )
140+ retry_backoff_max = os .environ .get ("OSC_RETRY_BACKOFF_MAX" )
141+ if retry_backoff_max is not None :
142+ self .retry_backoff_factor = float (retry_backoff_max )
131143
132144 def check_options (self ):
133145 if self .access_key is not None or self .secret_key is not None :
0 commit comments