我不擅长英语,所以如果你不理解我的句子,请给我任何评论。
我在django上使用celery进行定期任务。
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 :(得分: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)