2012-04-02 24 views
1

Ich laufe mod_wsgi auf Apache2. Es läuft Django und aus irgendeinem Grund, nachdem ich meinen Code geändert habe, werden manchmal alte Versionen zusammen mit neuem Code angezeigt.mod_wsgi zeigt alten Code

Zum Beispiel, nach dem Erstellen einer Ansicht, die einfach eine Http Response mit "Hi" zurückgibt, bekomme ich entweder die Django Startseite oder "Hi".

Irgendwelche Ideen, was würde dies verursachen?

Danke.

Antwort

2

apache2/mod_wsgi hält Teile der Anwendung zwischen Anfragen geladen. Sie müssen den Server nach der Codeaktualisierung neu starten.

+1

Insbesondere Lese ‚http://code.google.com/p/modwsgi/wiki/ReloadingSourceCode‘ zu berühren. Verwenden Sie den Daemon-Modus gegenüber dem Embedded-Modus und berühren Sie nach Änderungen die WSGI-Skriptdatei, damit der Code für die gesamte Anwendung neu geladen wird. –

+0

Danke! Dies ist das erste Mal, dass ich mod_wsgi anstelle von mod_python verwende. – Temuz

+1

@Temuz, Grzegorz Biały ist viel besser und sollte wahrscheinlich akzeptiert werden. – aaronasterling

0

Dies könnte möglicherweise Ihr Browser Caching-Antworten vom Server sein. Versuchen Sie, das Caching zu deaktivieren, um festzustellen, ob dies Auswirkungen hat. Selbst wenn dies nicht der Fall ist, kann Ihnen das in Zukunft möglicherweise viel Kummer und Verwirrung ersparen.

0

Löschen Sie alle .pyc Dateien aus Ihrem Code-Basisverzeichnis, und starten Sie den Server neu.

+0

Ich musste die '.pyc' Dateien nie löschen, weil Python nach Änderungen im Quellcode sucht. – aaronasterling

5

Wie @Aaronasterling sagte - mod_wsgi hält Code geladen, aber es ist nicht notwendig, Apache nach Änderung neu zu starten. Bequemeren Weg ist wsgi Datei von CLI, z.B .:

$ touch django.wsgi 
+0

+1 Danke für den Tipp – aaronasterling

+0

+1 aber das funktioniert nur, wenn mod_wsgi im Daemon-Modus läuft –