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 reload
ce qui fonctionne très bien. J'utilise restart uwsgi
pour 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 uwsgi
fonction 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 uwsgi
et l'exécution uwsgi.reload
semble é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
SIGHUP
Vous pouvez redémarrer uWSGI en envoyant le signal SIGHUP à votre processus uWSGI comme ceci:
Si vous souhaitez automatiser cela dans un script bash, vous pouvez demander à uWSGI d'écrire son identifiant de processus en fournissant l'
pidfile
option, par exemple comme:Ensuite, vous pouvez recharger le processus en:
rechargement tactile
Vous pouvez également démarrer uWSGI avec l'
touch-reload
argument, qui spécifie un fichier qui, lorsqu'il est touché, fait recharger uWSGI:Ensuite, uWSGI se rechargera lorsque vous toucherez le fichier:
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
la source