我们需要一个可以用来安排事件的服务。例如,我们可能有一项任务需要在 3 点钟运行(一次)或每 2 小时运行一次(多次)。最好每个任务都可以配置一个 AMQP 队列,它将发布到该队列。
我们可以通过创建 OS 计时器事件轻松实现这一点。我担心的是如果这项服务出现故障,如何恢复。如果它允许即时调度,我们可以使用 CRON。
我一直在寻找一种方法来避免重新发明轮子。如果还没有一个项目可以做到这一点,我们将创建一个。不过,这是一件很常见的事情,所以如果现在还没有人把它放在那里,我会感到惊讶。
我们需要一个可以用来安排事件的服务。例如,我们可能有一项任务需要在 3 点钟运行(一次)或每 2 小时运行一次(多次)。最好每个任务都可以配置一个 AMQP 队列,它将发布到该队列。
我们可以通过创建 OS 计时器事件轻松实现这一点。我担心的是如果这项服务出现故障,如何恢复。如果它允许即时调度,我们可以使用 CRON。
我一直在寻找一种方法来避免重新发明轮子。如果还没有一个项目可以做到这一点,我们将创建一个。不过,这是一件很常见的事情,所以如果现在还没有人把它放在那里,我会感到惊讶。
芹菜解决了这个问题。
celery.schedules让你定义周期性任务。你可以覆盖is_due
做一些事情,比如每月安排一次。您可以使用或celery-beat(我相信这是现在的标准方法)安排任务在特定时间执行。另一种方法是使用Task.apply_async的参数。periodic_task
eta