所以我一直在想如何制定計劃任務,我找到了芹菜,並能夠做出簡單的計劃任務。爲此,我需要打開一個命令行並運行celery -A proj beat
以執行任務。這在開發環境中可以正常工作,但將其投入生產時將成爲問題。Django-Celery在生產?
那麼如何讓芹菜在沒有命令行的情況下工作?當我的生產服務器在線時,我怎樣才能確保我的調度程序能夠跟上?芹菜可以做這個,還是我需要去另一種方法?
所以我一直在想如何制定計劃任務,我找到了芹菜,並能夠做出簡單的計劃任務。爲此,我需要打開一個命令行並運行celery -A proj beat
以執行任務。這在開發環境中可以正常工作,但將其投入生產時將成爲問題。Django-Celery在生產?
那麼如何讓芹菜在沒有命令行的情況下工作?當我的生產服務器在線時,我怎樣才能確保我的調度程序能夠跟上?芹菜可以做這個,還是我需要去另一種方法?
我們在我們的生產環境中使用芹菜,這恰好在Heroku上。我們正在轉向AWS。在這兩種環境中,芹菜都很好地嗡嗡作響。
這將有助於理解您的生產環境的樣子。我有點困惑,爲什麼你會擔心關閉你的電腦,因爲使用Django意味着你正在運行一個網站服務......你是從你的筆記本電腦服務你的網站?
無論如何,假設你要從雲平臺運行你的生產服務器,你所要做的就是發送你需要的任何命令行來運行Django和Celery的命令行(正如你已經在你的題)。
在配置方面,你說你有'計劃'任務,所以這意味着你已經在你的config.py文件中設置了節拍表。如果不是,它應該是這個樣子(假設你有一個模塊調用tasks.py持有你的芹菜任務定義:
from celery.schedules import crontab
beat_schedule = {
'task1': {
'task': 'tasks.task_one',
'schedule': 3600
},
'task2': {
'task': 'tibController.tasks.update_old_retail',
'schedule': crontab(hour=12, minute=0, day_of_week='mon-fri'
}
}
在tasks.py
然後就打電話給你只是做這個配置文件:
from celery import Celery
import config
app = Celery('tasks')
app.config_from_object(config)
你可以找到更多關於crontab的一個docs您還可以檢出該repo一個簡單的例子芹菜
總結:。
希望有所幫助。
所以基本上設置這個不需要在終端上鍵入'celery -A proj beat'? – Bijoy
是的,你仍然想運行beat命令,以便Celery知道啓動它。以下是我如何開始我的芹菜:'芹菜 - 一個task_module.tasks工人--loglevel =信息--beat'。 –
您準確地期望在生產中發生什麼問題? –
即使通過服務器在另一臺計算機上,我也無法在沒有計算機的情況下運行芹菜。 – user2361174
你可以隨時守護它。檢查了這一點,http://docs.celeryproject.org/en/latest/userguide/daemonizing.html –