2016-07-12 120 views
0

我不擅長英語,所以如果你不明白我的句子,給我任何評論。芹菜定期任務爲asnyc上Django

我在django上使用芹菜作定期任務。

CELERYBEAT_SCHEDULE = { 
    'send_sms_one_pm': { 
     'task': 'tasks.send_one_pm', 
     'schedule': crontab(minute=0, hour=13), 
    }, 
    'send_sms_ten_am': { 
     'task': 'tasks.send_ten_am', 
     'schedule': crontab(minute=0, hour=10), 
    }, 
    'night_proposal_noti': { 
     'task': 'tasks.night_proposal_noti', 
     'schedule': crontab(minute=0, hour=10) 
    }, 
} 

這是我的芹菜時間表,我使用redis作爲芹菜隊列。

問題是,當最大的任務開始時,其他任務處於暫停狀態。 最大的任務將處理10小時,其他任務在10小時後開始。

我的任務看起來像

@app.task(name='tasks.send_one_pm') 
def send_one_pm(): 

我發現,芹菜給我task.apply_asnyc(),但找不到週期性的任務可在asnyc工作。

所以,我想知道芹菜的週期性任務可以作爲asnyc任務工作。我的芹菜工人是8名工人。

回答

0

您是否也在設置中分配了CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler'? 如果你想有一個任務開始後,一個又一個的運行,你應該使用apply_asnyc()與鏈接kwargs,它看起來像這樣:

res=[signature(your_task.name, args=(...), options=kwargs, immutable=True),..] 
task.apply_async((args), link=res)