Reintentos
Configura los reintentos con RetryPolicy: número de intentos, estados reintentables, retroceso y manejo de cabeceras de reintento.
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,
)
Configuración del comportamiento de reintentos del SDK.
Ejemplos:
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
Número máximo de reintentos después del intento inicial; 0 desactiva los reintentos.
backoff_initial
class-attribute instance-attribute
backoff_initial: float = 0.5
Primer retardo de retroceso en segundos, que se duplica en cada intento hasta backoff_max; cero desactiva el retroceso.
backoff_max
class-attribute instance-attribute
backoff_max: float = 5.0
Retardo máximo de retroceso en segundos; cero desactiva el retroceso.
backoff_jitter
class-attribute instance-attribute
backoff_jitter: float = 0.25
Fracción de cada retardo de retroceso que se resta de forma aleatoria, entre 0 y 1.
http_statuses
class-attribute instance-attribute
http_statuses: set[int] = field(
default_factory=lambda: {
408,
429,
*range(500, 600),
}
)
Códigos de estado HTTP que se reintentan.
respect_retry_after
class-attribute instance-attribute
respect_retry_after: bool = True
Indica si se deben respetar las cabeceras de respuesta Retry-After y retry-after-ms.
api_connection_error
class-attribute instance-attribute
api_connection_error: bool = True
Indica si se debe reintentar TypeSafeAPIConnectionError, que se produce cuando la solicitud no puede alcanzar el servidor ni leer de él.
api_timeout_error
class-attribute instance-attribute
api_timeout_error: bool = True
Indica si se debe reintentar TypeSafeAPITimeoutError, que se produce cuando la solicitud supera su tiempo de espera.
exceptions
class-attribute instance-attribute
exceptions: set[type[BaseException]] = field(
default_factory=set
)
Tipos de excepción adicionales que desencadenan un reintento, además de las reglas integradas.
predicate
class-attribute instance-attribute
predicate: (
Callable[[BaseException], bool] | None
) = None
Un predicado opcional al que se llama con la excepción lanzada; devolver True desencadena un reintento además de las demás reglas.
timeout
class-attribute instance-attribute
timeout: float | None = 30.0
Presupuesto total de reintentos en segundos por llamada al SDK, incluido el intento inicial y las esperas; None desactiva el límite.
Se detiene antes de un reintento cuya espera alcanzaría o superaría el presupuesto, y vuelve a lanzar el último error.