comment faire un rechargement gracieux d'uwsgi via un script bash?


9

J'ai une application django qui exécute un script bash. J'ai besoin que le serveur nginx redémarre donc je lance /etc/init.d/nginx reloadce qui fonctionne très bien. J'utilise restart uwsgipour uwsgi mais je dois faire un rechargement gracieux au lieu d'un redémarrage dur du serveur.

Comment puis-je faire ceci?


J'exécute actuellement une reload uwsgifonction bash subprocess.popen. Il semble que le rechargement du processus qui appelle le sous-processus ne soit pas tous les sites hébergés par l'instance uwsgi. importing uwsgiet l'exécution uwsgi.reloadsemble également affecter uniquement le processus d'appel. Existe-t-il un commutateur pour uwsgi via python ou bash qui permet de redémarrer tous les processus uwsgi

Réponses:


0

Vous pouvez le faire en python

import uwsgi
uwsgi.reload()

uwsgi.reload () fonctionne par intermittence. il semble redémarrer le serveur avant la fin de certains de mes processus. J'exécute cela via une application Django et je veux qu'il redémarre l'ensemble du serveur.
darren

10

SIGHUP

Vous pouvez redémarrer uWSGI en envoyant le signal SIGHUP à votre processus uWSGI comme ceci:

kill -HUP <process-id>

Si vous souhaitez automatiser cela dans un script bash, vous pouvez demander à uWSGI d'écrire son identifiant de processus en fournissant l' pidfileoption, par exemple comme:

--pidfile=/tmp/uwsgi.pid

Ensuite, vous pouvez recharger le processus en:

uwsgi --reload /tmp/uwsgi.pid

rechargement tactile

Vous pouvez également démarrer uWSGI avec l' touch-reloadargument, qui spécifie un fichier qui, lorsqu'il est touché, fait recharger uWSGI:

--touch-reload=/some/file

Ensuite, uWSGI se rechargera lorsque vous toucherez le fichier:

touch /some/file

N'oubliez pas que vous ne pouvez recharger uWSGI que lorsqu'il fonctionne avec le mode de processus maître, mais c'est généralement le cas cependant.

Plus d'informations: http://uwsgi-docs.readthedocs.io/en/latest/Management.html#reloading-the-server

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.