Restart Nginx nach Update von Django-Projekt

Django, Flask, Bottle, WSGI, CGI…
Antworten
djangofish
User
Beiträge: 51
Registriert: Dienstag 16. Oktober 2012, 09:43
Kontaktdaten:

Hallo

wie kann ich Django neustarten nachdem ich mein Projekt aktualisiert habe?
starten geht ja mit

Code: Alles auswählen

python ./manage.py runfcgi host=127.0.0.1 port=8080
aber neustart?

Danke
Peter
Drache
User
Beiträge: 51
Registriert: Montag 29. November 2010, 21:51
Wohnort: Berlin
Kontaktdaten:

So weit ich weiß:
Du müsstest entweder den process killen und dann neustarten.
Und/oder den Port ändern also

Code: Alles auswählen

python ./manage.py runfcgi host=127.0.0.1 port=8081
und die nginx.conf auf den Port abändern und nginx neustarten.

Mit Tornado kannst du dein Django Projekt einfach einbinden.
Der Tornado merkt* wenn Änderungen am Code erfolgt ist,
und startet sich dann selber neu.
Man kann auch mehrer Tornados starten und der Nginx verteilt dann
die Zugriffe auf die Tornados.
Klappt wirklich sehr gut.

* mit dem Modul autoreload oder debug = True

Machs gut
Drache
djangofish
User
Beiträge: 51
Registriert: Dienstag 16. Oktober 2012, 09:43
Kontaktdaten:

mmh wie genau geht das? Tornado ist doch sowohl Webserver als auch Framework. Kann ich Nginx weiterverwenden und trotzdem das restart nutzen?
Hab als Server einen Raspberry und dem entsprechend sind die verfügbaren Ressourcen knapp.
Drache
User
Beiträge: 51
Registriert: Montag 29. November 2010, 21:51
Wohnort: Berlin
Kontaktdaten:

Hallo Peter,

hier ist ein schöner snippet um django im Tornado einzubetten:
http://djangosnippets.org/snippets/2667/

hier ist eine Beispiel einer nginx.conf mit Tornado:
https://gist.github.com/802576

Hat man, glaube ich, schnell am laufen.

Wenn du das auf einem Raspberry am laufen hast,
sag bescheid, würde mich auch interessieren.

Bei dem django snippet müsstest du noch das autoreload modul mit einbinden,
oder debug auf True setzten, was jeweils nur ein oder zwei Zeilen code sind.

Wenn dir Tornado nicht zusagt, geht das aber bestimmt auch mit anderen python webserver wie
gunicorn, hab ich selber noch nicht probiert.

Machs gut
Drache
djangofish
User
Beiträge: 51
Registriert: Dienstag 16. Oktober 2012, 09:43
Kontaktdaten:

Ich frage mich wie und wo ich das Snippet zu verwenden habe. Ist das ne eigenständige Datei oder kommt das irgendwo mit rein?
Drache
User
Beiträge: 51
Registriert: Montag 29. November 2010, 21:51
Wohnort: Berlin
Kontaktdaten:

ist ne eigene Datei.
Kannst du nennen wie du magst.
Du kannst die z.B. main8000.py nennen.
und main8001.py , wenn du die Zeile mit dem http_server.listen auf 8001 ab änderst.

Über die Kommandozeile mit einem argument ist später einfacher,
dann sähe der aufruf aus wie:
python main.py --port=8002
Funktioniert nicht mit dem Snippet, ist aber auch nur zwei Zeilen Code mehr.

Ach ja, ein Blick auf den Shell Befehl nohup solltest du noch bei Gelegenheit machen.
Machs gut
Drache
djangofish
User
Beiträge: 51
Registriert: Dienstag 16. Oktober 2012, 09:43
Kontaktdaten:

Danke. Probier ich heute Abend mal und berichte dann.
djangofish
User
Beiträge: 51
Registriert: Dienstag 16. Oktober 2012, 09:43
Kontaktdaten:

das mit dem Skript war mir zu....doof :)

es geht anscheinend auch wenn man nginx einfach neustartet:)

Hab jetzt eine Überwachung auf dem Verzeichnis und wenn sich was ändert wird ein Skript ausgeführt, an dessen Ende der Restart erfolgt.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Wenn die Ressourcen so knapp sind, wozu überhaupt nginx? Tornado bietet doch selbst einen Server.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten