@@ -82,8 +82,8 @@ <h1 class="title">Module <code>slack_sdk.http_retry.builtin_async_handlers</code
8282 *,
8383 state: RetryState,
8484 request: HttpRequest,
85- response: Optional[HttpResponse],
86- error: Optional[Exception],
85+ response: Optional[HttpResponse] = None ,
86+ error: Optional[Exception] = None ,
8787 ) -> bool:
8888 return response is not None and response.status_code == 429
8989
@@ -114,6 +114,27 @@ <h1 class="title">Module <code>slack_sdk.http_retry.builtin_async_handlers</code
114114 state.increment_current_attempt()
115115
116116
117+ class AsyncServerErrorRetryHandler(AsyncRetryHandler):
118+ """RetryHandler that does retries for server errors."""
119+
120+ def __init__(
121+ self,
122+ max_retry_count: int = 1,
123+ interval_calculator: RetryIntervalCalculator = default_interval_calculator,
124+ ):
125+ super().__init__(max_retry_count, interval_calculator)
126+
127+ async def _can_retry_async(
128+ self,
129+ *,
130+ state: RetryState,
131+ request: HttpRequest,
132+ response: Optional[HttpResponse] = None,
133+ error: Optional[Exception] = None,
134+ ) -> bool:
135+ return response is not None and response.status_code in [500, 503]
136+
137+
117138def async_default_handlers() -> List[AsyncRetryHandler]:
118139 return [AsyncConnectionErrorRetryHandler()]</ code > </ pre >
119140</ details >
@@ -236,8 +257,8 @@ <h2 id="args">Args</h2>
236257 *,
237258 state: RetryState,
238259 request: HttpRequest,
239- response: Optional[HttpResponse],
240- error: Optional[Exception],
260+ response: Optional[HttpResponse] = None ,
261+ error: Optional[Exception] = None ,
241262 ) -> bool:
242263 return response is not None and response.status_code == 429
243264
@@ -322,6 +343,60 @@ <h3>Methods</h3>
322343</ dd >
323344</ dl >
324345</ dd >
346+ < dt id ="slack_sdk.http_retry.builtin_async_handlers.AsyncServerErrorRetryHandler "> < code class ="flex name class ">
347+ < span > class < span class ="ident "> AsyncServerErrorRetryHandler</ span > </ span >
348+ < span > (</ span > < span > max_retry_count: int = 1, interval_calculator: < a title ="slack_sdk.http_retry.interval_calculator.RetryIntervalCalculator " href ="interval_calculator.html#slack_sdk.http_retry.interval_calculator.RetryIntervalCalculator "> RetryIntervalCalculator</ a > = <slack_sdk.http_retry.builtin_interval_calculators.BackoffRetryIntervalCalculator object>)</ span >
349+ </ code > </ dt >
350+ < dd >
351+ < div class ="desc "> < p > RetryHandler that does retries for server errors.</ p >
352+ < p > RetryHandler interface.</ p >
353+ < h2 id ="args "> Args</ h2 >
354+ < dl >
355+ < dt > < strong > < code > max_retry_count</ code > </ strong > </ dt >
356+ < dd > The maximum times to do retries</ dd >
357+ < dt > < strong > < code > interval_calculator</ code > </ strong > </ dt >
358+ < dd > Pass an interval calculator for customizing the logic</ dd >
359+ </ dl > </ div >
360+ < details class ="source ">
361+ < summary >
362+ < span > Expand source code</ span >
363+ </ summary >
364+ < pre > < code class ="python "> class AsyncServerErrorRetryHandler(AsyncRetryHandler):
365+ """RetryHandler that does retries for server errors."""
366+
367+ def __init__(
368+ self,
369+ max_retry_count: int = 1,
370+ interval_calculator: RetryIntervalCalculator = default_interval_calculator,
371+ ):
372+ super().__init__(max_retry_count, interval_calculator)
373+
374+ async def _can_retry_async(
375+ self,
376+ *,
377+ state: RetryState,
378+ request: HttpRequest,
379+ response: Optional[HttpResponse] = None,
380+ error: Optional[Exception] = None,
381+ ) -> bool:
382+ return response is not None and response.status_code in [500, 503]</ code > </ pre >
383+ </ details >
384+ < h3 > Ancestors</ h3 >
385+ < ul class ="hlist ">
386+ < li > slack_sdk.http_retry.async_handler.AsyncRetryHandler</ li >
387+ </ ul >
388+ < h3 > Class variables</ h3 >
389+ < dl >
390+ < dt id ="slack_sdk.http_retry.builtin_async_handlers.AsyncServerErrorRetryHandler.interval_calculator "> < code class ="name "> var < span class ="ident "> interval_calculator</ span > : < a title ="slack_sdk.http_retry.interval_calculator.RetryIntervalCalculator " href ="interval_calculator.html#slack_sdk.http_retry.interval_calculator.RetryIntervalCalculator "> RetryIntervalCalculator</ a > </ code > </ dt >
391+ < dd >
392+ < div class ="desc "> </ div >
393+ </ dd >
394+ < dt id ="slack_sdk.http_retry.builtin_async_handlers.AsyncServerErrorRetryHandler.max_retry_count "> < code class ="name "> var < span class ="ident "> max_retry_count</ span > : int</ code > </ dt >
395+ < dd >
396+ < div class ="desc "> </ div >
397+ </ dd >
398+ </ dl >
399+ </ dd >
325400</ dl >
326401</ section >
327402</ article >
@@ -358,6 +433,13 @@ <h4><code><a title="slack_sdk.http_retry.builtin_async_handlers.AsyncRateLimitEr
358433< li > < code > < a title ="slack_sdk.http_retry.builtin_async_handlers.AsyncRateLimitErrorRetryHandler.prepare_for_next_attempt_async " href ="#slack_sdk.http_retry.builtin_async_handlers.AsyncRateLimitErrorRetryHandler.prepare_for_next_attempt_async "> prepare_for_next_attempt_async</ a > </ code > </ li >
359434</ ul >
360435</ li >
436+ < li >
437+ < h4 > < code > < a title ="slack_sdk.http_retry.builtin_async_handlers.AsyncServerErrorRetryHandler " href ="#slack_sdk.http_retry.builtin_async_handlers.AsyncServerErrorRetryHandler "> AsyncServerErrorRetryHandler</ a > </ code > </ h4 >
438+ < ul class ="">
439+ < li > < code > < a title ="slack_sdk.http_retry.builtin_async_handlers.AsyncServerErrorRetryHandler.interval_calculator " href ="#slack_sdk.http_retry.builtin_async_handlers.AsyncServerErrorRetryHandler.interval_calculator "> interval_calculator</ a > </ code > </ li >
440+ < li > < code > < a title ="slack_sdk.http_retry.builtin_async_handlers.AsyncServerErrorRetryHandler.max_retry_count " href ="#slack_sdk.http_retry.builtin_async_handlers.AsyncServerErrorRetryHandler.max_retry_count "> max_retry_count</ a > </ code > </ li >
441+ </ ul >
442+ </ li >
361443</ ul >
362444</ li >
363445</ ul >
0 commit comments