diff --git a/stripe/_http_client.py b/stripe/_http_client.py index 3f69f5a91..65c3ed684 100644 --- a/stripe/_http_client.py +++ b/stripe/_http_client.py @@ -85,7 +85,6 @@ class _Proxy(TypedDict): MAX_DELAY = 5 INITIAL_DELAY = 0.5 - MAX_RETRY_AFTER = 60 _proxy: Optional[_Proxy] _verify_ssl_certs: bool @@ -162,23 +161,7 @@ def _should_retry( return False - def _retry_after_header( - self, response: Optional[Tuple[Any, Any, Mapping[str, str]]] = None - ): - if response is None: - return None - _, _, rheaders = response - - try: - return int(rheaders["retry-after"]) - except (KeyError, ValueError): - return None - - def _sleep_time_seconds( - self, - num_retries: int, - response: Optional[Tuple[Any, Any, Mapping[str, str]]] = None, - ) -> float: + def _sleep_time_seconds(self, num_retries: int) -> float: """ Apply exponential backoff with initial_network_retry_delay on the number of num_retries so far as inputs. Do not allow the number to exceed `max_network_retry_delay`. @@ -193,11 +176,6 @@ def _sleep_time_seconds( # But never sleep less than the base sleep seconds. sleep_seconds = max(HTTPClient.INITIAL_DELAY, sleep_seconds) - # And never sleep less than the time the API asks us to wait, assuming it's a reasonable ask. - retry_after = self._retry_after_header(response) or 0 - if retry_after <= HTTPClient.MAX_RETRY_AFTER: - sleep_seconds = max(retry_after, sleep_seconds) - return sleep_seconds def _add_jitter_time(self, sleep_seconds: float) -> float: @@ -311,7 +289,7 @@ def _request_with_retries_internal( % connection_error.user_message ) num_retries += 1 - sleep_time = self._sleep_time_seconds(num_retries, response) + sleep_time = self._sleep_time_seconds(num_retries) _util.log_info( ( "Initiating retry %i for request %s %s after " @@ -469,7 +447,7 @@ async def _request_with_retries_internal_async( % connection_error.user_message ) num_retries += 1 - sleep_time = self._sleep_time_seconds(num_retries, response) + sleep_time = self._sleep_time_seconds(num_retries) _util.log_info( ( "Initiating retry %i for request %s %s after " diff --git a/tests/test_http_client.py b/tests/test_http_client.py index ea74cf7d9..2d1101f9f 100644 --- a/tests/test_http_client.py +++ b/tests/test_http_client.py @@ -168,23 +168,6 @@ def test_maximum_delay(self): expected = [0.5, 1.0, 2.0, 4.0, max_delay, max_delay, max_delay] self.assert_sleep_times(client, expected) - def test_retry_after_header(self): - client = _http_client.new_default_http_client() - client._add_jitter_time = lambda sleep_seconds: sleep_seconds - - # Prefer retry-after if it's bigger - assert 30 == client._sleep_time_seconds( - 2, (None, 409, {"retry-after": "30"}) - ) - # Prefer default if it's bigger - assert 2 == client._sleep_time_seconds( - 3, (None, 409, {"retry-after": "1"}) - ) - # Ignore crazy-big values - assert 1 == client._sleep_time_seconds( - 2, (None, 409, {"retry-after": "300"}) - ) - def test_randomness_added(self): client = _http_client.new_default_http_client() random_value = 0.8