2012-07-12 75 views
2

我有這種情況,我需要務實地安排一項任務,並且任務定義每次需要執行時都需要一定的輸入參數。請看下面的任務功能:如何務實地用動態輸入安排芹菜任務?

@task 
def add_numbers(a, b): 
    sum = a + b 
    return sum 

現在,如果我需要在不同的輸入兩個不同的時間實例上運行上述任務參數前T1-> add_numbers(4,5)和T2-> add_numbers(2,2 ),我該如何去做。謝謝您的幫助。

ENV:Django的1.4,芹菜3.0

+0

你好汗先生, 我們也嘗試使用芹菜分配和安排我們的工作。我們有要求在運行時安排或重新安排任務。這個要求與您在問題中提到的要求非常相似。 我只是想檢查你能夠解決這個問題。 謝謝, Hussain Bohra – 2015-04-09 15:39:10

回答

0

參見定期任務的芹菜文檔如何在一個指定的時間間隔調用帶有參數的任務的例子。 http://docs.celeryproject.org/en/latest/userguide/periodic-tasks.html#entries

在您的例子,你可以使用類似:

from celery.schedules import crontab 

CELERYBEAT_SCHEDULE = { 
    'T1': { 
     'task': 'tasks.add_numbers', 
     'schedule': crontab(hour=7, minute=30, day_of_week=1),, 
     'args': (4, 5) 
    }, 
    'T2': { 
     'task': 'tasks.add_numbers', 
     'schedule': crontab(hour=16, minute=0),, 
     'args': (2, 2) 
    }, 
} 
+0

謝謝@ narced133的方向。它會嘗試和更新。 – 2012-07-14 00:08:59

1

我也遇到了這個問題,我認爲還有另一種方式來幫助你。 @ narced133的答案只適用於各種參數有限的情況,那麼如果我們有幾千種參數呢?

解決方案: 重構你的celery task接受功能PARAM,該函數將產生或獲取對你的celery task真正PARAMS的PARAMS:add_numbers