Nouvelles tentatives
Configure les nouvelles tentatives avec RetryPolicy — nombre de tentatives, statuts à réessayer, backoff et gestion des en-têtes de réessai.
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,
)
Configuration du comportement de réessai du SDK.
Exemples :
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
Nombre maximal de nouvelles tentatives après la tentative initiale ; 0 les désactive.
backoff_initial
class-attribute instance-attribute
backoff_initial: float = 0.5
Premier délai de backoff en secondes, doublé à chaque tentative jusqu’à backoff_max ; zéro désactive le backoff.
backoff_max
class-attribute instance-attribute
backoff_max: float = 5.0
Délai de backoff maximal en secondes ; zéro désactive le backoff.
backoff_jitter
class-attribute instance-attribute
backoff_jitter: float = 0.25
Fraction de chaque délai de backoff soustraite aléatoirement, entre 0 et 1.
http_statuses
class-attribute instance-attribute
http_statuses: set[int] = field(
default_factory=lambda: {
408,
429,
*range(500, 600),
}
)
Codes de statut HTTP qui déclenchent une nouvelle tentative.
respect_retry_after
class-attribute instance-attribute
respect_retry_after: bool = True
Indique s’il faut respecter les en-têtes de réponse Retry-After et retry-after-ms.
api_connection_error
class-attribute instance-attribute
api_connection_error: bool = True
Indique s’il faut réessayer TypeSafeAPIConnectionError, levée lorsque la requête ne peut pas atteindre le serveur ou lire sa réponse.
api_timeout_error
class-attribute instance-attribute
api_timeout_error: bool = True
Indique s’il faut réessayer TypeSafeAPITimeoutError, levée lorsque la requête dépasse son délai d’expiration.
exceptions
class-attribute instance-attribute
exceptions: set[type[BaseException]] = field(
default_factory=set
)
Types d’exception supplémentaires qui déclenchent une nouvelle tentative, en plus des règles intégrées.
predicate
class-attribute instance-attribute
predicate: (
Callable[[BaseException], bool] | None
) = None
Un prédicat facultatif appelé avec l’exception levée ; renvoyer True déclenche une nouvelle tentative en plus des autres règles.
timeout
class-attribute instance-attribute
timeout: float | None = 30.0
Budget total de réessai en secondes par appel du SDK, tentative initiale et délais compris ; None désactive la limite.
S’arrête avant une nouvelle tentative dont le délai atteindrait ou dépasserait le budget, en relevant la dernière erreur.