ドキュメント

リトライ

リトライ

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 で制限を無効にします。

遅延が予算に達するか超えるリトライの手前で停止し、最後のエラーを再送出します。