2016-07-12 121 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)