使用 celery-beat 完成上一个任务后,如何在 5 分钟内运行任务?

Posted

技术标签:

【中文标题】使用 celery-beat 完成上一个任务后,如何在 5 分钟内运行任务?【英文标题】:How can to run task in 5 minutes after finish previous task using celery-beat? 【发布时间】:2020-02-26 00:18:57 【问题描述】:

我有两个任务 - ab

任务 a 在完成上一个任务 a 后 5 分钟内运行。

任务 b 在完成上一个任务 b 后 3 分钟内运行。

我该如何实现它?我正在使用python 3.6.8Django 2.2.6celery 4.3.0

【问题讨论】:

【参考方案1】:

简短的回答是您不能使用 celery beat 执行此操作,因为 celery beat 会在任务开始时触发,而不是在任务结束时触发。如果您绝对需要在上一个任务结束后三分钟执行此操作,建议您只需在 ab 的末尾添加对 .apply_async 的调用,并开始每个任务一次。

【讨论】:

以上是关于使用 celery-beat 完成上一个任务后,如何在 5 分钟内运行任务?的主要内容,如果未能解决你的问题,请参考以下文章

Django celery 和 celery-beat 守护进程脚本错误

Celery-Beat:ACCESS_REFUSED - 使用身份验证机制 AMQPLAIN 拒绝登录

烧瓶如何在某些任务(如电子邮件发送)尚未完成之前呈现页面

如何为 MFC 中的线程完成添加事件处理程序?

如何为 TPL 中的任务分配名称

iOS Facebook Messenger,打开并完成任务后自动关闭链接