Ich versuche, einen funktionierenden Supervisor / Gunicorn / Django-Setup für Vagrant zu bekommen. Ich benutze Python-Watchdog, um Gunicorn neu zu starten, wenn Codeänderungen auftreten.
Ich verwende die folgende Supervisor-Konfiguration für Gunicorn:
[program:someapp]
environment=PYTHONPATH='/vagrant/libs/unmodified/django-error-capture-middleware/src:/vagrant:/home/vagrant/.virtualenvs/someapp/lib/python2.7/site-packages:/vagrant/wsgi',DJANGO_SETTINGS_MODULE=someapp.settings.vagrant
command=/home/vagrant/.virtualenvs/someapp/bin/gunicorn --bind 0.0.0.0:80 --pid=/home/vagrant/.gunicorn.pid --preload --workers=1 --debug --log-level debug --error-logfile - --access-logfile - vagrant_wsgi:application
user=root
group=root
redirect_stderr=true
stdout_logfile = /vagrant/logs/gunicorn.log
stderr_logfile = /vagrant/logs/gunicorn.log
stdout_logfile_maxbytes=0
autostart=true
autorestart=true
stdout_events_enabled=true
loglevel=debug
Das alles funktioniert gut. Der Watchdog funktioniert auch gut. Wenn ich jedoch Watchdog verwende, um a auszuführen kill -HUP [pidofgunicorn]
, wird es manchmal nicht vollständig neu geladen. Manchmal meldet django sogar, dass Module fehlen, als sie vorher dort waren (ich habe sys.path überhaupt nicht geändert).
Wenn ich Watchdog verwende, um a auszuführen supervisorctl restart someapp
, funktioniert es einwandfrei. Dies dauert jedoch viel länger, insbesondere bei der Virtualbox-Instanz.
Gibt es etwas, das ich tun kann, um das Gunicorn dazu zu bringen, elegant nachzuladen und die vorgenommenen Änderungen tatsächlich zu sehen?