Saltar al contenido principal

Errores, límites de tasa y fiabilidad

Intermedio
What you'll learn
  • Leer el mapa de errores HTTP y saber qué estados reintentar frente a cuáles corregir
  • Reintentar errores transitorios con backoff exponencial y jitter, acotado
  • Gestionar los límites de tasa con retry-after, suavizado, procesamiento por lotes y modelos más baratos
  • Aislar tu código de las obsolescencias y migraciones de modelos

El código de producción se comunica con un servicio de red, por lo que debe esperar fallos. Un poco de estructura aquí marca la diferencia entre una integración inestable y una fiable.

El mapa de errores

Estados HTTP típicos que tendrás que gestionar:

EstadoSignificadoQué hacer
400Solicitud no válidaCorrige el payload; no reintentes tal cual
401Clave de API incorrecta/ausenteComprueba las credenciales
403No permitidoComprueba el acceso/los permisos
429Límite de tasa alcanzadoAplica backoff y reintenta (respeta retry-after)
500/529Error del servidor / sobrecargadoReintenta con backoff
Pro tip
  • Los SDK exponen estos casos como excepciones tipadas, de modo que puedes ramificar de forma limpia en lugar de analizar cadenas de texto.

Reintentos con backoff

Para errores transitorios (429, 5xx), reintenta con backoff exponencial + jitter, con tope:

import time, random
for attempt in range(5):
try:
return client.messages.create(...)
except (RateLimitError, APIStatusError) as e:
if attempt == 4 or not should_retry(e):
raise
time.sleep(min(2 ** attempt + random.random(), 30))
Watch out
  • Muchos SDK reintentan los errores transitorios automáticamente: conoce el comportamiento por defecto de tu cliente antes de añadir el tuyo, o podrías duplicar los reintentos.

Límites de tasa

Los límites se aplican por cuenta/nivel (solicitudes y tokens por minuto). Cuando alcanzas uno recibes un 429 con pistas de tiempo. Estrategias para mantenerte bajo el techo:

Guided walkthrough1 of 4
  1. Cuando recibas un 429, lee la pista de tiempo en la respuesta y espera ese intervalo antes de reintentar.

Consulta Elegir un modelo para seleccionar el modelo adecuado para los pasos de alto volumen.

Migración de modelos

Los IDs de modelo llevan fecha/versión y acaban quedando obsoletos. Protégete:

Key takeaways
  • 400/401/403 son culpa tuya: corrige la solicitud o las credenciales, no reintentes a ciegas. 429 y 500/529 son reintentables.
  • Reintenta los errores transitorios con backoff exponencial + jitter, con tope (p. ej. min(2 ** attempt + random(), 30)).
  • Ante un 429: respeta retry-after, suaviza los picos, agrupa en lotes el trabajo offline y enruta los pasos de alto volumen a un modelo más barato.
  • Lee los IDs de modelo desde la configuración, vigila las obsolescencias y vuelve a ejecutar las evaluaciones al migrar de modelo.

Ponte a prueba

0/4
  1. Recibes un 400 Solicitud no válida. ¿Qué deberías hacer?
  2. ¿Qué estados son los que deberías reintentar con backoff?
  3. ¿Por qué añadir jitter al backoff exponencial?
  4. ¿Cuál NO es una estrategia sugerida para los límites de tasa?

Siguiente