我不擅长英语,所以如果你听不懂我的句子,给我任何评论。
我使用芹菜在 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 名工人。
您是否也在设置中分配了CELERYBEAT_SCHEDULER = 'djcelery.schedulers.DatabaseScheduler'
?如果您希望一个任务在另一个任务之后开始运行,您应该将apply_asnyc()
与链接一起使用 kwargs
,它看起来像这样:
res=[signature(your_task.name, args=(...), options=kwargs, immutable=True),..]
task.apply_async((args), link=res)