it-swarm.com.de

Wie starte ich uWSGI neu, wenn ein Python Skript geändert wird)?

Ich kann mich nicht erinnern, wo, aber ich habe gelesen, dass sich uWSGI wie Django Entwicklungsserver, wenn ein Projektskript geändert wird, neu laden kann. Ich kann das nicht in den Dokumenten finden. noch im Internet. Wie kann ich das machen?

Ich verwende Ubuntu 12.04 auf meinen Arbeitsmaschinen und Debian Squeeze auf Stage & Production Server, Django 1.4 und uWSGI 1.2.

39
culebrón

Referenz: http://projects.unbit.it/uwsgi/wiki/Management

Wenn Sie uwsgi mit dem --touch-reload=/path/to/special/file/usually/the.ini Option: Das Neuladen Ihres uWSGI ist eine einfache Sache, mit der Sie diese Datei neu laden müssen

touch /path/to/special/file/usually/the.ini

Und wenn Sie die Funktion "Autoreload" möchten, ist dies der Tipp, der dies erledigt: http://projects.unbit.it/uwsgi/wiki/TipsAndTricks#uWSGIdjangoautoreloadmode

39
Calvin Cheng

Da ist ein py-autoreload=N Option in neueren Versionen. Stellen Sie einfach N auf die Häufigkeit (in Sekunden) der Überprüfungen ein (3 ist ein guter Wert).

38
roberto

Wenn Sie das Autoreload Django autoreload) nicht verlieren möchten, registrieren Sie diese Reload-Methode (d. H. In settings.py):

import uwsgi
from uwsgidecorators import timer
from Django.utils import autoreload

@timer(3)
def change_code_gracefull_reload(sig):
    if autoreload.code_changed():
        uwsgi.reload()

Wenn Sie nun Ihren Code ändern, wird er neu geladen.

Autor: Simone Federici

10
BorisHajduk

uwsgi erlaubt auch einen Neustart mit kill SIGNAL. Ich benutze es wie folgt:

# ps -efa | grep uwsgi | grep prod
app  13390 13383  0 07:40 ?        00:00:00 /usr/local/bin/uwsgi --ini /etc/uwsgi/apps-enabled/app_prod.ini
app  13417 13390  0 07:40 ?        00:00:00 /usr/local/bin/uwsgi --ini /etc/uwsgi/apps-enabled/app_prod.ini
app  13419 13390  0 07:40 ?        00:00:00 /usr/local/bin/uwsgi --ini /etc/uwsgi/apps-enabled/app_prod.ini
# kill -HUP 13390

Wenn Sie denselben Befehl ausführen, wird die PID des untergeordneten Prozesses geändert, wenn er vom Master erneut erzeugt wird. Überprüfen Sie auch die uwsgi-Konfiguration auf die Anzahl der Master-/Worker-Prozesse. Diese Methode lässt sich leicht in ansible oder andere Automatisierungstools integrieren und ist daher für die Remote-Verwendung einfach zu verwenden.

Dies erfordert nicht, dass Ihr ursprünglicher Prozess mit --touch-reload gestartet wird.

0
mrtipale