J'ai mis en place un serveur d'intégration pour notre application basée sur Django. Certaines fonctionnalités sont encore expérimentales et entraînent des demandes trop longues.
Je suis d'accord avec les mauvaises performances, pour l'instant, mais je dois pouvoir m'intégrer. Chaque fois que nous utilisons la fonctionnalité qui mène à une longue demande, l'application se bloque (comme prévu) puis, après peut-être une minute et demie, renvoie un «502 - Bad Gateway». Le reste de l'application fonctionne bien.
J'ai vérifié le journal gunicorn, et chaque fois que cela se produit, je reçois une ligne comme
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
cependant, cela se produit bien avant le délai d'expiration réel du travailleur, que j'ai défini à 10 minutes juste pour être sûr. Voici une partie du script parvenu qui exécute 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
J'utilise la version 0.13.4 de gunicorn. Toute aide serait grandement appréciée.
-t
option que j'avais déjà dans la question?