Tiempo de espera frecuente del trabajador
Configuré Gunicorn con 3 trabajadores, 30 conexiones de trabajadores y usé la clase de trabajador eventlet. Está configurado detrás de Nginx. Después de cada pocas solicitudes, veo esto en los registros.
[ERROR] gunicorn.error: WORKER TIMEOUT (pid:23475)
None
[INFO] gunicorn.error: Booting worker with pid: 23514
¿Por qué está pasando esto? ¿Cómo puedo saber qué está mal?
Tuvimos el mismo problema al usar Django+nginx+gunicorn. Desde la documentación de Gunicorn hemos configurado el tiempo de espera elegante que casi no hizo ninguna diferencia.
Después de algunas pruebas, encontramos la solución, el parámetro a configurar es: tiempo de espera (y no tiempo de espera elegante). Funciona como un reloj..
Entonces, haz:
1) abre el archivo de configuración de gunicorn
2) configure el TIEMPO DE ESPERA según lo que necesite: el valor está en segundos
NUM_WORKERS=3
TIMEOUT=120
exec gunicorn ${DJANGO_WSGI_MODULE}:application \
--name $NAME \
--workers $NUM_WORKERS \
--timeout $TIMEOUT \
--log-level=debug \
--bind=127.0.0.1:9000 \
--pid=$PIDFILE
En Google Cloud Simplemente agregue --timeout 90
al punto de entrada enapp.yaml
entrypoint: gunicorn -b :$PORT main:app --timeout 90
Ejecuta Gunicorn con --log-level debug
.
Debería proporcionarle un seguimiento de la pila de aplicaciones.