芹菜定期任务作为 Django 上的 ASNYC



我不擅长英语,所以如果你听不懂我的句子,给我任何评论。

我使用芹菜在 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)

相关内容

  • 没有找到相关文章

最新更新