celery 可以在啟動時自動運作嗎?

celery 可以在啟動時自動運作嗎?

我有基於 django 和 celery 的 python 伺服器。每次電腦重新啟動時,apache2 都會啟動,因此我的伺服器正在工作,但我必須手動重新啟動 celery(前往我的專案目錄並執行「python manage.py celeryd」)。生產的正確解決方案是什麼?我的意思是,是否有可能將 celery 作為守護程式啟動?

這裡http://github.com/ask/celery/tree/master/contrib/debian/init.d/我發現兩個腳本看起來應該在 /etc/init.d/ 中,就像啟動 apache2 的 apache2 腳本一樣。但我把它們放在 /etc/init.d/ 中,我發現沒有任何變化。

答案1

您可以手動符號連結 /etc/rc5.d/ 中的 /etc/init.d 腳本,以便在 GUI 啟動時啟動。而且你還需要另一個來關閉。

但 Debian 有更先進(也更好)的方法。這控制從各個運行層級初始化腳本連結的內容。這就是這些腳本頂部的註釋部分中“BEGIN INIT INFO”的用途。

如果您實際上正在使用 Debian,請嘗試使用而不是僅使用其資源之一中的腳本

update-rc.d celerybeat 預設值
update-rc.d celeryd 預設值

答案2

Celery 提供了一個範例配置導師,一個守護程序,負責處理與專案相關的任務和守護程序。 Debian Unstable 已經提供了 Supervisor 的包裝版本。如果安裝它,您只需要修改 celery 中的範例配置(在 contrib/supervisor 中找到)並將其放入 /etc/supervisor/conf.d/ 中。

答案3

您沒有提到您正在使用哪個發行版。了解這一點很重要,因為不同發行版的啟動腳本差異很大。假設您正在使用 Redhat/CentOS...

理想情況下,您應該追蹤 init.d 腳本。這是python manage.py celeryd更好的選擇,因為它還用於安全地關閉守護程序、重新加載其配置、重新啟動它等/etc/rc.local

編輯:我透過範例中的路徑名稱看到您正在使用 Debian。我不確定 Debian 是否有 /etc/rc.local 檔案。但我會保留這個答案,以防萬一,或者這個資訊對其他人有用。

相關內容