2009-07-01 5 views
10

Ich habe eine Installation von Django auf Apache mit eingebetteten wsgi. Ich habe keine Wurzel auf der Maschine.Reload django wsgi Skripte ohne Root

Wie kann ich Apache anweisen, die Python-Instanz neu zu laden, wenn ich neuen Quellcode bereitstellen?

Ich habe versucht, alle .pyc-Dateien zu entfernen und es läuft immer noch der alte Code.

Antwort

5

http://code.google.com/p/modwsgi/wiki/ReloadingSourceCode

Dieser Artikel über Quellcode mit mod_wsgi Nachladen geht in wie Quellcode neu zu laden, und sogar, wie ein Monitor-Skript zu erstellen, um automatisch den Daemon neu zu laden, wenn Sie Quelle Änderungen vornehmen. Es ist wirklich gut, eine Entwicklungsumgebung mit mod_wsgi einzurichten.

+1

Dieser Link scheint "MaxRequestsPerChild 1" zu empfehlen, was meine Leistung zunichtemacht. Ich war auf der Suche nach einer Möglichkeit, es neu zu laden, wenn ich einen Push mache. –

+0

Sie müssen das nicht verwenden ... Lesen Sie die nächsten drei Abschnitte im Artikel über den Daemon-Modus und die Code-Change-Überwachung. –

+0

Daemon-Modus ist die Antwort. Zwei Zeilen in der Apache-Konfiguration, und es kostet nicht Leistung. danke –

14

Wenn Sie mod_wsgi im Daemon-Modus mit Apache ausführen, müssen Sie möglicherweise Apache nicht neu starten, um es neu zu laden.

Ich berühre einfach meine wsgi-Datei (unix: touch aktualisiert das 'gespeicherte Datum' einer Datei) und Apache lädt sie beim nächsten Zugriff/Web-Hit neu.

Siehe http://code.google.com/p/modwsgi/wiki/QuickConfigurationGuide

... solange Sie den Zeitstempel auf dem WSGI Skript ändern können.

+3

"touch filename.wsgi" ist der richtige Weg, es zu tun, und erfordert keine root oder Apache neu starten. Da ich dies in der Regel nur unmittelbar nach dem Auschecken des neuen Codes tun möchte, habe ich einen Alias ​​eingerichtet, um den neuesten Code zu erhalten und wsgi gleichzeitig zu berühren, zB: alias upcrest = 'cd/home/crest/sites/projects/ourcrestmont; Svn hoch; touch /home/crest/our/ourcrestmont.wsgi ' – shacker

+0

Genau! Gute Idee mit dem Befehlsalias. – joej

+0

Es gibt ruhig ein paar fangen, siehe http://code.google.com/p/modwsgi/wiki/ReloadingSourceCode#Reloading_In_Embedded_Mode – Wernight