Dokumentation

Wiederholungen

Konfiguriere Wiederholungen mit RetryPolicy — Versuchsanzahl, wiederholbare Statuscodes, Backoff und Behandlung von Retry-Headern.

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,
)

Konfiguration für das Wiederholungsverhalten des SDK.

Beispiele:

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

Maximale Anzahl Wiederholungen nach dem ersten Versuch; 0 deaktiviert Wiederholungen.

backoff_initial

class-attribute instance-attribute

backoff_initial: float = 0.5

Erste Backoff-Verzögerung in Sekunden, die sich bei jedem Versuch bis backoff_max verdoppelt; null deaktiviert den Backoff.

backoff_max

class-attribute instance-attribute

backoff_max: float = 5.0

Maximale Backoff-Verzögerung in Sekunden; null deaktiviert den Backoff.

backoff_jitter

class-attribute instance-attribute

backoff_jitter: float = 0.25

Anteil jeder Backoff-Verzögerung, der zufällig abgezogen wird, zwischen 0 und 1.

http_statuses

class-attribute instance-attribute

http_statuses: set[int] = field(
    default_factory=lambda: {
        408,
        429,
        *range(500, 600),
    }
)

HTTP-Statuscodes, die wiederholt werden.

respect_retry_after

class-attribute instance-attribute

respect_retry_after: bool = True

Ob die Antwortheader Retry-After und retry-after-ms beachtet werden.

api_connection_error

class-attribute instance-attribute

api_connection_error: bool = True

Ob TypeSafeAPIConnectionError wiederholt wird, der ausgelöst wird, wenn die Anfrage den Server nicht erreichen oder von ihm lesen kann.

api_timeout_error

class-attribute instance-attribute

api_timeout_error: bool = True

Ob TypeSafeAPITimeoutError wiederholt wird, der ausgelöst wird, wenn die Anfrage ihr Zeitlimit überschreitet.

exceptions

class-attribute instance-attribute

exceptions: set[type[BaseException]] = field(
    default_factory=set
)

Zusätzliche Ausnahmetypen, die zusätzlich zu den integrierten Regeln eine Wiederholung auslösen.

predicate

class-attribute instance-attribute

predicate: (
    Callable[[BaseException], bool] | None
) = None

Ein optionales Prädikat, das mit der ausgelösten Ausnahme aufgerufen wird; die Rückgabe True löst zusätzlich zu den anderen Regeln eine Wiederholung aus.

timeout

class-attribute instance-attribute

timeout: float | None = 30.0

Gesamtes Wiederholungsbudget in Sekunden pro SDK-Aufruf, einschließlich des ersten Versuchs und der Verzögerungen; None deaktiviert die Begrenzung.

Stoppt vor einer Wiederholung, deren Verzögerung das Budget erreichen oder überschreiten würde, und löst den letzten Fehler erneut aus.