TS TypeSafe 文档中文版 原文 ↗

重试

使用 RetryPolicy 配置重试:尝试次数、可重试的状态码、退避以及重试响应头的处理。

typesafe_sdk.RetryPolicy

dataclass

SDK 重试行为的配置。

示例:

python
from typesafe_sdk import RetryPolicy, TypeSafeClient
 
client = TypeSafeClient(
    retry=RetryPolicy(
        max_retries=3, timeout=10.0, http_statuses={429, 500, 502, 503, 504}
    )
)
 

max_retries

class-attribute instance-attribute

初次尝试之后的最大重试次数;0 表示禁用重试。

backoff_initial

class-attribute instance-attribute

首次退避延迟,以秒为单位,每次尝试翻倍,直至 backoff_max;零表示禁用退避。

backoff_max

class-attribute instance-attribute

最大退避延迟,以秒为单位;零表示禁用退避。

backoff_jitter

class-attribute instance-attribute

从每次退避延迟中随机减去的比例,取值在 0 与 1 之间。

http_statuses

class-attribute instance-attribute

会被重试的 HTTP 状态码。

respect_retry_after

class-attribute instance-attribute

是否遵循 Retry-After 与 retry-after-ms 响应头。

api_connection_error

class-attribute instance-attribute

是否重试 TypeSafeAPIConnectionError,该错误在请求无法到达服务器或无法从服务器读取时抛出。

api_timeout_error

class-attribute instance-attribute

是否重试 TypeSafeAPITimeoutError,该错误在请求超出其超时时间时抛出。

exceptions

class-attribute instance-attribute

在内置规则之外,额外触发重试的异常类型。

predicate

class-attribute instance-attribute

可选的判定函数,以抛出的异常作为参数调用;返回 True 时会在其他规则之外额外触发一次重试。

timeout

class-attribute instance-attribute

每次 SDK 调用的重试总预算,以秒为单位,包含初次尝试与各次延迟;None 表示禁用该限制。

当某次重试的延迟会达到或超出该预算时,会在重试前停止,并重新抛出最后一次错误。