He reunido un servidor de integración para nuestra aplicación con tecnología Django. Algunas de las características aún son experimentales y resultan en solicitudes demasiado largas.
Estoy de acuerdo con el bajo rendimiento, por ahora, pero necesito poder integrarme. Cada vez que usamos la función que lleva a una solicitud larga, la aplicación se cuelga (como se esperaba) y luego, después de quizás un minuto y medio, devuelve un '502 - Bad Gateway'. El resto de la aplicación funciona bien.
Revisé el registro de gunicorn, y cada vez que esto sucede, recibo una línea como
2012-01-20 17:30:13 [23128] [DEBUG] GET /results/
2012-01-20 17:30:43 [23125] [ERROR] WORKER TIMEOUT (pid:23128)
Traceback (most recent call last):
File "/home/demo/python_envs/frontend/lib/python2.6/site-packages/gunicorn/app/base.py", line 111, in run
os.setpgrp()
OSError: [Errno 1] Operation not permitted
sin embargo, esto sucede mucho antes del tiempo de espera real del trabajador, que configuré en 10 minutos solo para asegurarme. Aquí hay parte del script de inicio que ejecuta gunicorn.
description "..."
start on runlevel [2345]
stop on runlevel [!2345]
#Send KILL after 5 seconds
kill timeout 5
respawn
env VENV="/path/to/a/virtual/env/"
#how to know the pid
pid file $VENV/run/guniconr-8080.pid
script
exec sudo -u demo $VENV/bin/gunicorn_django --preload --daemon -w 4 -t 600 --log-level debug --log-file $VENV/run/gunicorn-8080.log -p $VENV/run/gunicorn-8080.pid -b localhost:8080 /path/to/settings.py
end script
Estoy ejecutando gunicorn versión 0.13.4. Cualquier ayuda sería muy apreciada.
-t
opción que ya tenía en la pregunta?Este es quizás un problema con su configuración nginx. ¿Configuraste el valor proxy_read_timeout?
Fuente: http://wiki.nginx.org/HttpProxyModule#proxy_read_timeout
fuente