2010-07-08 82 views
1

我在我的可重用django應用程序中獲得了一個自定義命令,我想要啓動守護程序服務,然後返回,從而使服務繼續運行。使用djangos manage.py自定義命令啓動守護程序服務?

我已經實現我的服務作爲一個簡單的類與啓動方法。當啓動被調用時,它運行在一個永恆的循環中,休眠10秒鐘,然後使用django orm檢查項目settings.py文件中配置的數據庫,檢查給定文件夾中的條目。

我希望能夠到:

./manage.py startservice 

它踢我的服務和回報。然後在相同的外殼:

./manage.py runserver 

,並開始在該5秒內通過在後臺和處理運行的服務拾起一個特定的數據庫表添加條目。

我已經看過芹菜更多的基於消息隊列的方法,但它依賴於太多的其他東西。整個事情遵循django的可重用應用程序模式很重要。

任何提示或想法?

+0

請注意,芹菜可以使用Django的ORM和數據庫,而不是RabbitMQ,如果這是你的意思,依靠太多其他的東西。 – asksol 2010-07-08 13:28:09

回答

2

我有一個庫的開頭,django-initd,來處理這個問題:請參閱the project on GitHub

Django實際上包含一個用於進程自我進程的實用程序,在django.utils.daemonize中,我的庫負責啓動/關閉,日誌記錄以及與管理命令的交互。我很想知道它是否對你有幫助。

0

爲什麼你想開始服務作爲separte過程?

在與runserver相同的進程中運行在線程中。

+0

嗯...你能給我一個簡單的例子,如何做到這一點?沒有任何使用線程的經驗。我計劃至少啓動兩個以上的服務(一個ftpserver和一個虛擬文件系統),所以如果我可以使用線程來管理它們,那將會很好。 – Weholt 2010-07-13 10:59:10

+0

這裏的基本例子。 進口線程 高清工人(): #這裏做了一些有益的工作 threading.Thread(目標=工作人員)。開始() 閱讀'threading'模塊的文檔。 – 2010-07-14 06:56:10

相關問題