Wie führe ich ein elegantes Uwsgi-Reload per Bash-Skript durch?


9

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 reloadwas hervorragend funktioniert. Ich habe restart uwsgifü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 uwsgiFunktion 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 uwsgiund Laufen uwsgi.reloadscheint 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?

Antworten:


0

Sie können es in Python tun

import uwsgi
uwsgi.reload()

Die Datei uwsgi.reload () arbeitet zeitweise. Es scheint, als würde der Server neu gestartet, bevor einige meiner Prozesse abgeschlossen sind. Ich führe dies über eine Django-Anwendung aus und möchte, dass der gesamte Server neu gestartet wird.
Darren

10

SEUFZEND

Sie können uWSGI neu starten, indem Sie das SIGHUP-Signal wie folgt an Ihren uWSGI-Prozess senden:

kill -HUP <process-id>

Wenn Sie dies in einem Bash-Skript automatisieren möchten, können Sie uWSGI die Prozess-ID wegschreiben lassen, indem Sie die folgende pidfileOption angeben :

--pidfile=/tmp/uwsgi.pid

Dann können Sie den Prozess neu laden, indem Sie:

uwsgi --reload /tmp/uwsgi.pid

Touch-Reload

Sie können uWSGI auch mit dem touch-reloadArgument starten , das eine Datei angibt, bei deren Berühren uWSGI neu geladen wird:

--touch-reload=/some/file

Dann wird uWSGI neu geladen, wenn Sie die Datei berühren:

touch /some/file

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.