重试
使用 RetryPolicy 配置重试:尝试次数、可重试的状态码、退避以及重试响应头的处理。
typesafe_sdk.RetryPolicy
dataclass
SDK 重试行为的配置。
示例:
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 表示禁用该限制。
当某次重试的延迟会达到或超出该预算时,会在重试前停止,并重新抛出最后一次错误。