2009-08-10 55 views
3

當我以守護進程模式啓動「粘貼」Web服務器時,它似乎消除了在更新源文件的時間戳時重新加載的能力。粘貼(Python)Web服務器 - 自動加載問題

這裏是我開始守護...

cd ${project} && ../bin/paster serve --reload --daemon development.ini; cd ..; 

...這違背了使用粘貼的要點之一(對我來說)。

有沒有人遇到過這個或知道我在做什麼錯了?

爲了完整,我正在更改的文件是一個控制器文件。

的版本是`PasteScript 1.7.3'

回答

5

我認爲,這兩個選項,基本上是不相容,因爲reloader停止用SIGTERM和守護程序化的服務器的服務器不透這一點 - 因爲daemon適用於在生產環境中運行,reload適用於開發/調試環境,我猜它們的不兼容性不會被視爲一大損失。我想象一個定製的重新載入程序,適合於正確地停止和重新啓動守護程序的服務器,當然可以開發,但我不知道任何現有的。

+1

謝謝 - 這是我需要聽到的。 :) – Cyrus 2009-08-10 05:39:08

+1

--reload的文件監視器每秒鐘檢查每個源文件,並且可以使用大量的CPU時間。你不應該在生產中使用它。如果使用mod_wsgi,則可以通過檢查加載應用程序的單個.wsgi腳本上的時間戳來重新加載它。其他WSGI服務器也具有重要的重新加載功能,如Spawning。 – joeforker 2010-03-16 21:12:43

+0

*我相信這兩個選項基本上是不相容的*它們,[確實](https://bitbucket.org/ianb/pastescript/src/510ff7d7627750eb0dbbc0d36fa63c72ffa6b303/paste/script/serve.py?at=default#cl-162 )。 – 2012-11-07 19:27:43

3

我有類似的問題,並繞過了這個問題。我目前的貼紙在遠程主機上運行,​​但我仍在開發中,所以我需要一種重新啓動貼紙的方法,但手動手動耗費時間,守護程序無法正常工作。所以我總是不得不保持一個shell窗口打開服務器,並在那裏沒有 - 守護進程運行貼紙。一旦我完成了我那天的工作,並且我關閉了殼體,貼膜死了,這很糟糕。

我規避了在一個「屏幕」中運行非守護進程的貼圖。 只需在你選擇的shell中輸入「screen」,你通常會根據你的linux提供一個虛擬終端,當你註銷遠程會話時,它仍然會繼續運行。通常在新的「窗口」(屏幕)中使用--reload但沒有守護進程啓動貼圖,然後分離窗口,以便返回到正常的shell(detach = CTRL-A,然後按D)。您可以通過輸入「screen -r」重新進入該屏幕。如果你想殺死它,重新連接(屏幕-r)並在屏幕內部鍵入CTRL-A,然後按K.

希望有所幫助。