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.