Ich habe eine Django-Anwendung, die ein Bash-Skript ausführt. Ich benötige einen Neustart des Nginx-Servers, damit ich ausgeführt werde, /etc/init.d/nginx reload
was hervorragend funktioniert. Ich habe restart uwsgi
für uwsgi verwendet, aber ich muss ein ordnungsgemäßes Neuladen anstelle eines Neustarts des harten Servers durchführen.
Wie kann ich das machen?
Ich führe gerade eine Bash- reload uwsgi
Funktion durch subprocess.popen
. Es scheint nur den Prozess neu zu laden, der den Unterprozess aufruft, nicht alle Sites, die von der uwsgi-Instanz gehostet werden. importing uwsgi
und Laufen uwsgi.reload
scheint auch nur den aufrufenden Prozess zu beeinflussen. Gibt es einen Schalter für uwsgi über Python oder Bash, mit dem alle uwsgi-Prozesse neu gestartet werden können?
SEUFZEND
Sie können uWSGI neu starten, indem Sie das SIGHUP-Signal wie folgt an Ihren uWSGI-Prozess senden:
Wenn Sie dies in einem Bash-Skript automatisieren möchten, können Sie uWSGI die Prozess-ID wegschreiben lassen, indem Sie die folgende
pidfile
Option angeben :Dann können Sie den Prozess neu laden, indem Sie:
Touch-Reload
Sie können uWSGI auch mit dem
touch-reload
Argument starten , das eine Datei angibt, bei deren Berühren uWSGI neu geladen wird:Dann wird uWSGI neu geladen, wenn Sie die Datei berühren:
Denken Sie daran, dass Sie uWSGI nur neu laden können, wenn es im Master-Prozessmodus ausgeführt wird. Dies ist jedoch normalerweise der Fall.
Weitere Informationen: http://uwsgi-docs.readthedocs.io/en/latest/Management.html#reloading-the-server
quelle