문서

재시도

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이면 제한을 비활성화합니다.

지연이 예산에 도달하거나 초과할 재시도 전에 멈추고 마지막 오류를 다시 발생시킵니다.