2017-02-14 77 views
2

所以我一直在想如何制定計劃任務,我找到了芹菜,並能夠做出簡單的計劃任務。爲此,我需要打開一個命令行並運行celery -A proj beat以執行任務。這在開發環境中可以正常工作,但將其投入生產時將成爲問題。Django-Celery在生產?

那麼如何讓芹菜在沒有命令行的情況下工作?當我的生產服務器在線時,我怎樣才能確保我的調度程序能夠跟上?芹菜可以做這個,還是我需要去另一種方法?

+0

您準確地期望在生產中發生什麼問題? –

+0

即使通過服務器在另一臺計算機上,我也無法在沒有計算機的情況下運行芹菜。 – user2361174

+3

你可以隨時守護它。檢查了這一點,http://docs.celeryproject.org/en/latest/userguide/daemonizing.html –

回答

2

我們在我們的生產環境中使用芹菜,這恰好在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一個簡單的例子芹菜

總結:。

  1. 創建標識要運行的任務時
  2. 加載配置文件到您的芹菜應用
  3. 獲取雲平臺上運行代碼中的配置文件。
  4. 運行芹菜就像你已經確定

希望有所幫助。

+0

所以基本上設置這個不需要在終端上鍵入'celery -A proj beat'? – Bijoy

+0

是的,你仍然想運行beat命令,以便Celery知道啓動它。以下是我如何開始我的芹菜:'芹菜 - 一個task_module.tasks工人--loglevel =信息--beat'。 –