2012-02-28 52 views
4

我在Apache/mod_wsgi的Windows 7上設置了Django。我需要停下來,然後每次更改任何Python代碼時啓動服務器。有沒有辦法避免它?爲什麼我們需要在django項目中更改一些文件後重新啓動apache

這不會發生在javascript/php的變化中,也就是說,爲了看到更改後的代碼的效果,不需要重新啓動apache。向正確的方向推進會有很大幫助。謝謝!

回答

4

您不必重新啓動Apache。只需修改wsgi文件(在UNIX環境中,您可以使用touch myfile.wsgi),它將被重新加載。換句話說,只要確保wsgi文件的最後修改日期已更新,即使文件內容本身不是。

P.S.我假設你在守護進程模式下運行。如果您使用的是嵌入式模式,那麼我的建議不會對您有所幫助,我不知道是否可以做到這一點...另請參閱this question

編輯:對不起,我不知道daemon模式是only supported on UNIX。在這種情況下,也許其他問題中的鏈接會有所幫助,但我無法確定,因爲我沒有經驗。

+0

好吧,我閱讀文檔[這裏](http://code.google.com/p/modwsgi/wiki/ReloadingSourceCode#Monitoring_For_Code_Changes) ,實際上,wsgi在Windows 7中以嵌入模式運行。因此,除了每次進行微小更改時都重新啓動服務器,別無選擇。而且我不喜歡'MaxRequestsPerChild 1'解決方案,因爲它甚至可以爲php/js文件重新啓動服務器。因此,在Windows中沒有解決方案:( – Unos 2012-02-28 11:59:58

2

這是因爲Python代碼緩存在.pyc文件中。在使用緩存之後,它會被解釋一次。對不起,我的錯!感謝您指出。

如果您需要經常更改文件並立即查看結果進行開發,請使用內置於開發服務器中的Django。

它是在命令行使用Python解釋器調用: 蟒蛇manage.py runserver命令

然後,你將擁有應用程序的運行@本地端口8000

請,請閱讀文檔!

+1

代碼緩存在內存中,而不是在'.pyc'文件中。您可以刪除相應的.pyc文件,但仍然需要重新啓動服務器以查看您的更改。 – DrTyrsa 2012-02-28 10:50:46

+0

pyc文件與它無關。首先關閉Apache用戶通常不會有寫權限來創建pyc文件。第二,加載的模塊已經在內存中,因此不會使用pyc文件隨後的請求,只有在進程啓動時,此時Python會自動重新生成它們,如果py文件已經改變的話 – 2012-02-28 21:58:26

相關問題