diff --git a/src/sumo/wrapper/_blob_client.py b/src/sumo/wrapper/_blob_client.py index 284df25..35ac785 100644 --- a/src/sumo/wrapper/_blob_client.py +++ b/src/sumo/wrapper/_blob_client.py @@ -54,6 +54,6 @@ async def _put(): async with httpx.AsyncClient() as client: return await client.put(url=url, content=blob, headers=headers) - retryer = self._retry_strategy.make_retryer() + retryer = self._retry_strategy.make_retryer_async() return await retryer(_put) diff --git a/src/sumo/wrapper/_retry_strategy.py b/src/sumo/wrapper/_retry_strategy.py index 4f58066..b2224fb 100644 --- a/src/sumo/wrapper/_retry_strategy.py +++ b/src/sumo/wrapper/_retry_strategy.py @@ -54,3 +54,22 @@ def make_retryer(self): retry_error_callback=_return_last_value, before_sleep=_log_retry_info, ) + + def make_retryer_async(self): + return tn.AsyncRetrying( + stop=tn.stop_after_attempt(self._stop_after), + retry=( + tn.retry_if_exception(_is_retryable_exception) + | tn.retry_if_result(_is_retryable_status_code) + ), + wait=( + tn.wait_exponential( + multiplier=self._multiplier, exp_base=self._exp_base + ) + + tn.wait_random_exponential( + multiplier=self._multiplier, exp_base=self._exp_base + ) + ), + retry_error_callback=_return_last_value, + before_sleep=_log_retry_info, + ) diff --git a/src/sumo/wrapper/sumo_client.py b/src/sumo/wrapper/sumo_client.py index 763db76..41afb60 100644 --- a/src/sumo/wrapper/sumo_client.py +++ b/src/sumo/wrapper/sumo_client.py @@ -388,7 +388,7 @@ async def _get(): timeout=DEFAULT_TIMEOUT, ) - retryer = self._retry_strategy.make_retryer() + retryer = self._retry_strategy.make_retryer_async() return await retryer(_get) @@ -466,7 +466,7 @@ async def _post(): timeout=DEFAULT_TIMEOUT, ) - retryer = self._retry_strategy.make_retryer() + retryer = self._retry_strategy.make_retryer_async() return await retryer(_post) @@ -514,7 +514,7 @@ async def _put(): timeout=DEFAULT_TIMEOUT, ) - retryer = self._retry_strategy.make_retryer() + retryer = self._retry_strategy.make_retryer_async() return await retryer(_put) @@ -554,6 +554,6 @@ async def _delete(): timeout=DEFAULT_TIMEOUT, ) - retryer = self._retry_strategy.make_retryer() + retryer = self._retry_strategy.make_retryer_async() return await retryer(_delete)