gunicorn non ricarica completamente dopo un segnale HUP

Sto cercando di get un supervisore di lavoro / setup gunicorn / django sul vagante. Sto usando python-watchdog per provare e riavviare la castagna quando i cambiamenti di codice accadono.

Sto usando la seguente configuration di supervisore per 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 

Tutto funziona bene. Anche il watchdog funziona bene. Tuttavia, quando uso il watchdog per eseguire un kill -HUP [pidofgunicorn] , a volte non sarà in realtà ricaricare completamente. A volte django anche segnalerà che i moduli mancano quando erano precedenti prima (non ho modificato sys.path a tutti).

Se uso watchdog per eseguire un supervisorctl restart someapp , funziona bene. Tuttavia, richiede molto più tempo, soprattutto sull'istanza virtualbox.

C'è qualcosa che posso fare per get il gunicorn a ricaricare con grazia e in realtà vedere i cambiamenti che sono stati fatti?

  • Che cosa è dd se = / dev / zero di = / EMPTY bs = 1M
  • Vagrant ha impostato le autorizzazioni di condivisione predefinite
  • Vagrant / chef - nginx cookbook si estende
  • Come fare uno chef utilizzare un ip diverso?
  • Imansible accedere a daemon monit tramite HTTP dalla port host utilizzando Vagrant
  • Utilizzando il vagabondo e lo chef per impostare un Windows VM in Ubuntu
  • dpkg-reconfigure: imansible riaprire stdin: Nessun file o directory
  • "Vagrant up" non riesce con errore "NS_ERROR_CALL_FAILED"
  • One Solution collect form web for “gunicorn non ricarica completamente dopo un segnale HUP”

    Il problema è il parametro "preload".

    La prima soluzione non è quella di utilizzare il preload.

    La seconda soluzione è seguire questo:

     # Reload a new master with new workers kill -s USR2 $PID # Graceful stop old workers kill -s WINCH $OLDPID # Graceful stop old master kill -s QUIT $OLDPID 

    La terza soluzione è quella di utilizzare il pacchetto https://github.com/flupke/rainbow-saddle che funziona bene con supervisord.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.