Abrir el circuito si un servicio downstream falla repetidamente para evitar cascada de errores
El circuit breaker en el gateway detecta cuando un microservicio downstream (liveness_agent, face_match_agent, etc.) está fallando y deja de enviarle tráfico temporalmente. Esto previene que errores en un servicio saturen el gateway y degraden toda la experiencia.
Usar para todos los servicios upstream configurados en Nginx. Integrar con el health monitor para que el estado del circuito se refleje en los dashboards de Grafana.
pip install tenacity pybreakerbackend/core/circuit_breaker.py:
from pybreaker import CircuitBreaker
liveness_breaker = CircuitBreaker(fail_max=5, reset_timeout=30)
face_match_breaker = CircuitBreaker(fail_max=5, reset_timeout=30)
@liveness_breaker
async def call_liveness_agent(payload): ...
proxy_next_upstream error timeout http_500 http_502 http_503 para routing automático al siguiente upstream.proxy_connect_timeout 2s y proxy_read_timeout 10s — timeouts cortos evitan que un upstream lento colapse el gateway.circuit_breaker_state{service="liveness_agent"}.fail_max=5 significa que tras 5 fallos consecutivos se abre el circuito.reset_timeout=30 segundos en OPEN antes de probar HALF-OPEN.