2012-04-02 44 views
1

我在apache2上運行mod_wsgi。它運行的是Django,出於某種原因,在更改我的代碼後,舊版本有時會與新代碼一起顯示。顯示舊代碼的mod_wsgi

例如,在創建一個簡單的返回帶有「Hi」的Http Response的視圖之後,我得到了Django的開始頁面或「Hi」。

任何想法會導致這種情況?

謝謝。

回答

2

apache2/mod_wsgi會在請求之間加載部分應用程序。代碼更新後,您必須重新啓動服務器。

+1

尤其是讀「http://code.google.com/p/modwsgi/wiki/ReloadingSourceCode」。使用守護進程模式優先於嵌入模式,並在更改後觸摸WSGI腳本文件,以便代碼將重新加載整個應用程序。 – 2012-04-02 08:02:34

+0

謝謝!這是我第一次使用mod_wsgi而不是mod_python。 – Temuz 2012-04-02 19:29:58

+1

@Temuz,GrzegorzBiały's要好得多,應該可以接受。 – aaronasterling 2012-04-03 01:18:22

0

這可能是您的瀏覽器緩存來自服務器的響應。嘗試禁用緩存以查看是否有任何影響。即使現在不這樣做,這樣做可能會在未來爲您節省很多悲傷和困惑。

0

從代碼庫目錄中刪除任何.pyc文件,然後重新啓動服務器。

+0

我從來不需要刪除'.pyc'文件,因爲python會檢查源代碼中的更改。 – aaronasterling 2012-04-02 05:10:27

5

正如@aaronasterling說的 - mod_wsgi保持代碼加載,但沒有必要在更改後重新啓動Apache。更方便的方法是從CLI觸摸WSGI文件,例如:

$ touch django.wsgi 
+0

+1感謝提示 – aaronasterling 2012-04-02 21:51:43

+0

+1,但這隻有在mod_wsgi以守護進程模式運行時纔有效 – 2013-01-24 10:08:07