リトライ
リトライ
RetryPolicy でリトライを設定します。試行回数、リトライ対象のステータス、バックオフ、リトライヘッダーの扱い。
typesafe_sdk.RetryPolicy
dataclass
RetryPolicy(
max_retries: int = 2,
backoff_initial: float = 0.5,
backoff_max: float = 5.0,
backoff_jitter: float = 0.25,
http_statuses: set[int] = (
lambda: {408, 429, *range(500, 600)}
)(),
respect_retry_after: bool = True,
api_connection_error: bool = True,
api_timeout_error: bool = True,
exceptions: set[
type[BaseException]
] = set(),
predicate: Callable[[BaseException], bool]
| None = None,
timeout: float | None = 30.0,
)
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
max_retries: int = 2
初回試行後の最大リトライ回数。0 でリトライを無効にします。
backoff_initial
class-attribute instance-attribute
backoff_initial: float = 0.5
最初のバックオフ遅延(秒)。試行ごとに倍になり backoff_max まで増えます。0 でバックオフを無効にします。
backoff_max
class-attribute instance-attribute
backoff_max: float = 5.0
最大バックオフ遅延(秒)。0 でバックオフを無効にします。
backoff_jitter
class-attribute instance-attribute
backoff_jitter: float = 0.25
各バックオフ遅延からランダムに差し引く割合(0〜1)。
http_statuses
class-attribute instance-attribute
http_statuses: set[int] = field(
default_factory=lambda: {
408,
429,
*range(500, 600),
}
)
リトライ対象の HTTP ステータスコード。
respect_retry_after
class-attribute instance-attribute
respect_retry_after: bool = True
Retry-After と retry-after-ms の応答ヘッダーに従うかどうか。
api_connection_error
class-attribute instance-attribute
api_connection_error: bool = True
リクエストがサーバーに到達できない、または読み取れないときに送出される TypeSafeAPIConnectionError をリトライするかどうか。
api_timeout_error
class-attribute instance-attribute
api_timeout_error: bool = True
リクエストがタイムアウトを超えたときに送出される TypeSafeAPITimeoutError をリトライするかどうか。
exceptions
class-attribute instance-attribute
exceptions: set[type[BaseException]] = field(
default_factory=set
)
組み込みの規則に加えて、リトライを起こす例外型。
predicate
class-attribute instance-attribute
predicate: (
Callable[[BaseException], bool] | None
) = None
送出された例外とともに呼ばれる任意の述語。True を返すと、他の規則に加えてリトライします。
timeout
class-attribute instance-attribute
timeout: float | None = 30.0
SDK 呼び出しごとのリトライ総予算(秒)。初回試行と遅延を含みます。None で制限を無効にします。
遅延が予算に達するか超えるリトライの手前で停止し、最後のエラーを再送出します。