From 581697993c97792e0bcd8aeec1ca3b5630beb9aa Mon Sep 17 00:00:00 2001 From: Hector Juarez Date: Thu, 26 Jun 2025 13:15:07 -0600 Subject: [PATCH] skip retry-after header and add random wait. --- meraki/rest_session.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/meraki/rest_session.py b/meraki/rest_session.py index 157b4cb0..6e7a97a6 100644 --- a/meraki/rest_session.py +++ b/meraki/rest_session.py @@ -257,12 +257,12 @@ def request(self, metadata, method, url, **kwargs): case 429: # Retry if 429 retries are enabled and there are retries left if self._wait_on_rate_limit and retries > 0: - if 'Retry-After' in response.headers: + if False and 'Retry-After' in response.headers: wait = int(response.headers['Retry-After']) else: wait = random.randint(1, self._nginx_429_retry_wait_time) if self._logger: - self._logger.warning(f'{tag}, {operation} - {status} {reason}, retrying in {wait} seconds') + self._logger.warning(f'{tag}, {operation} - {status} {reason} {retries}, retrying in {wait} seconds') time.sleep(wait) retries -= 1 # We're either out of retries or the client told us not to retry @@ -270,9 +270,10 @@ def request(self, metadata, method, url, **kwargs): raise APIError(metadata, response) # Handle 5xx errors case status if 500 <= status: + wait = random.randint(1, self._nginx_429_retry_wait_time) if self._logger: - self._logger.warning(f'{tag}, {operation} - {status} {reason}, retrying in 1 second') - time.sleep(1) + self._logger.warning(f'{tag}, {operation} - {status} {reason} {retries}, retrying in {wait} second') + time.sleep(wait) retries -= 1 if retries == 0: raise APIError(metadata, response) @@ -309,7 +310,7 @@ def handle_4xx_errors(self, metadata, operation, reason, response, retries, stat if network_delete_concurrency_error_text in message['errors'][0]: wait = random.randint(30, self._network_delete_retry_wait_time) if self._logger: - self._logger.warning(f'{tag}, {operation} - {status} {reason}, retrying in {wait} seconds') + self._logger.warning(f'{tag}, {operation} - {status} {reason} {retries}, retrying in {wait} seconds') time.sleep(wait) retries -= 1 if retries == 0: @@ -322,7 +323,7 @@ def handle_4xx_errors(self, metadata, operation, reason, response, retries, stat in message['errors'][0]): wait = self._action_batch_retry_wait_time if self._logger: - self._logger.warning(f'{tag}, {operation} - {status} {reason}, retrying in {wait} seconds') + self._logger.warning(f'{tag}, {operation} - {status} {reason} {retries}, retrying in {wait} seconds') time.sleep(wait) retries -= 1 if retries == 0: @@ -332,7 +333,7 @@ def handle_4xx_errors(self, metadata, operation, reason, response, retries, stat elif self._retry_4xx_error: wait = random.randint(1, self._retry_4xx_error_wait_time) if self._logger: - self._logger.warning(f'{tag}, {operation} - {status} {reason}, retrying in {wait} seconds') + self._logger.warning(f'{tag}, {operation} - {status} {reason} {retries}, retrying in {wait} seconds') time.sleep(wait) retries -= 1 if retries == 0: