首页 > 解决方案 > 如果队列中的执行延迟了最大时间段,如何丢弃计划的 celery 任务?

问题描述

设想:

  1. 任务在特定时间通过 celerybeat 时间表在 celery 中排队。

  2. 在某些罕见的情况下,celery 任务队列可能很长,或者任务可能需要比正常时间更长的时间才能完成。

  3. 让我们假设很少有任务在凌晨 3 点被安排在队列中,并且大部分任务在凌晨 4 点由工作人员完成。让我们假设早上 5 点是一个时间限制。

  4. 在某些场景下,上述任务的执行时间会达到早上 6 点。如果现在时间已经过了凌晨 5 点,如何丢弃当前排队的所有任务?即,如果当前时间已超过 time_of_day 条件,则已在某个时间排队的任务将不会运行。

一个明显的方法是datetime在 celery 任务代码中使用模块并在它们超过 time_of_day 条件时返回。

芹菜中是否有任何内置方法/参数来控制这种行为?实现这一目标的更好方法是什么?

标签: pythonpython-3.xcelery

解决方案


推荐阅读