Ho creato un server di integrazione per la nostra applicazione basata su Django. Alcune funzionalità sono ancora sperimentali e comportano richieste eccessivamente lunghe.
Sto bene con le scarse prestazioni, per ora, ma devo essere in grado di integrarmi. Ogni volta che utilizziamo la funzione che porta a una lunga richiesta, l'app si blocca (come previsto) e quindi, dopo forse un minuto e mezzo, restituisce un "502 - Bad Gateway". Il resto dell'app funziona bene.
Ho controllato il registro di Gunicorn e ogni volta che succede ho una linea simile
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
tuttavia, ciò accade molto prima del timeout effettivo del lavoratore, che ho impostato su 10 minuti solo per essere sicuro. Ecco parte dello script upstart che esegue 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
Sto eseguendo la versione 0.13.4 di Gunicorn. Qualsiasi aiuto sarebbe molto apprezzato.
-t
opzione che ho già avuto nella domanda?