Repaso
English
Backend y APIsIntermedioAPI-25

Un endpoint genera un informe en 2 minutos. ¿Cuál es el mejor diseño de API?

Opciones

  1. Mantener la petición HTTP abierta los dos minutos completos
  2. Encolar un trabajo, devolver 202 Accepted con una URL de estado y consultar (Opción correcta)
  3. Devolver un error 500 y pedir al cliente que reintente después
  4. Usar una petición GET con un timeout muy grande en el cliente

Respuesta

Encolar un trabajo (Celery/RQ/SQS), devolver 202 Accepted con una URL de estado, y que el cliente consulte o reciba un webhook

Por qué

Los load balancers y proxies suelen cortar las conexiones tras 30-60 segundos, y un usuario mirando un spinner es mala UX.

En su lugar: pon el trabajo en una cola, responde de inmediato con 202 Accepted y una URL como /reports/123/status. Un background worker hace el trabajo.

El cliente consulta la URL de estado (polling) o recibe un aviso (webhook/WebSocket) cuando está listo.

Recuerda

Trabajo lento → background job + 202 Accepted.

Términos clave

Practica esta pregunta en Repaso