loglevel - Error de tiempo de espera de trabajador de Gunicorn
set timeout in gunicorn (6)
Configuré gunicornio con 3 trabajadores 30 conexiones de trabajador y uso de 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 averiguar qué está yendo mal?
Gracias
¿Podría ser esto? http://docs.gunicorn.org/en/latest/settings.html#timeout
Otras posibilidades podrían ser que su respuesta demore demasiado o que se quede esperando.
Ejecutar Gunicorn con --log-level=DEBUG
.
Debería darte un seguimiento de pila de aplicaciones.
En Google Cloud Solo agregue --timeout 90
al entrypoint en app.yaml
entrypoint: gunicorn -b :$PORT main:app --timeout 90
Necesita usar otra clase de tipo de trabajador y una asincrónica como gevent o tornado. Consulte esto para obtener más información: Primera explicación:
Es posible que también desee instalar Eventlet o Gevent si espera que el código de la aplicación deba detenerse durante períodos prolongados durante el procesamiento de la solicitud.
Segundo :
Los trabajadores síncronos predeterminados asumen que su aplicación está vinculada a los recursos en términos de ancho de banda de la CPU y la red. En general, esto significa que su aplicación no debe hacer nada que lleve un tiempo indefinido. Por ejemplo, una solicitud a internet cumple este criterio. En algún momento, la red externa fallará de tal forma que los clientes se acumularán en sus servidores.
Tuve un problema muy similar, también intenté usar "runserver" para ver si podía encontrar algo, pero todo lo que tenía era un mensaje.
Así que pensé que podría ser un problema de recursos, y me adelanté a dar más RAM a la instancia, y funcionó.
Tuvimos el mismo problema al usar Django + nginx + gunicorn. De la documentación de Gunicorn hemos configurado el elegante tiempo de espera que casi no hizo diferencia.
Después de algunas pruebas, encontramos la solución, el parámetro para configurar es: tiempo de espera (y no tiempo de gracia). Funciona como un reloj ...
Entonces, haz:
1) abra el archivo de configuración de gunicornio
2) configure TIMEOUT a 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