Ich habe einen Integrationsserver für unsere Django-basierte Anwendung zusammengestellt. Einige der Funktionen sind noch experimentell und führen zu zu langen Anforderungen.
Ich bin mit der schlechten Leistung im Moment einverstanden, aber ich muss mich integrieren können. Immer wenn wir die Funktion verwenden, die zu einer langen Anfrage führt, hängt die App (wie erwartet) und gibt nach etwa anderthalb Minuten ein "502 - Bad Gateway" zurück. Der Rest der App funktioniert gut.
Ich habe das Gunicorn-Protokoll überprüft, und wann immer dies passiert, bekomme ich eine Zeile wie
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
Dies geschieht jedoch lange vor dem tatsächlichen Workout-Timeout, das ich auf 10 Minuten eingestellt habe, um sicherzugehen. Hier ist ein Teil des Upstart-Skripts, mit dem Gunicorn ausgeführt wird.
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
Ich verwende Gunicorn Version 0.13.4. Jede Hilfe wäre sehr dankbar.
-t
Option, die ich bereits in der Frage hatte?