Eu montei um servidor de integração para o nosso aplicativo com Django. Alguns dos recursos ainda são experimentais e resultam em solicitações excessivamente longas.
Estou bem com o fraco desempenho, por enquanto, mas preciso integrar. Sempre que usamos o recurso que leva a uma solicitação longa, o aplicativo trava (como esperado) e, em seguida, depois de um minuto e meio, retorna um '502 - Gateway inválido'. O restante do aplicativo funciona bem.
Eu verifiquei o log do gunicorn, e sempre que isso acontece eu recebo uma linha 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
no entanto, isso acontece muito antes do tempo de espera real do trabalhador, que eu defini para 10 minutos apenas para ter certeza. Aqui está parte do script upstart que roda o 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
Estou usando a versão 0.13.4 do gunicorn. Qualquer ajuda seria muito apreciada.