@@ -207,15 +207,18 @@ def request(self, metadata, method, url, **kwargs):
207207
208208 # Rate limit 429 errors
209209 elif status == 429 :
210- if 'Retry-After' in response .headers :
211- wait = int (response .headers ['Retry-After' ])
210+ # Retry if 429 retries are enabled and there are retries left
211+ if self ._wait_on_rate_limit and retries > 0 :
212+ if 'Retry-After' in response .headers :
213+ wait = int (response .headers ['Retry-After' ])
214+ else :
215+ wait = random .randint (1 , self ._nginx_429_retry_wait_time )
216+ if self ._logger :
217+ self ._logger .warning (f'{ tag } , { operation } - { status } { reason } , retrying in { wait } seconds' )
218+ time .sleep (wait )
219+ retries -= 1
220+ # We're either out of retries or the client told us not to retry
212221 else :
213- wait = random .randint (1 , self ._nginx_429_retry_wait_time )
214- if self ._logger :
215- self ._logger .warning (f'{ tag } , { operation } - { status } { reason } , retrying in { wait } seconds' )
216- time .sleep (wait )
217- retries -= 1
218- if retries == 0 :
219222 raise APIError (metadata , response )
220223
221224 # 5XX errors
@@ -249,7 +252,7 @@ def handle_4xx_errors(self, metadata, operation, reason, response, retries, stat
249252 action_batch_errors = [error for error in message ['errors' ] if action_batch_concurrency_error_text in error ]
250253
251254 if network_deletion_errors :
252- wait = random .randint (30 , self ._network_delete_retry_wait_time )
255+ wait = random .randint (10 , self ._network_delete_retry_wait_time )
253256 if self ._logger :
254257 self ._logger .warning (f'{ tag } , { operation } - { status } { reason } , retrying in { wait } seconds' )
255258 time .sleep (wait )
0 commit comments