我们需要一项可用于安排活动的服务。例如,我们可能需要在3点(一次)运行或每2小时运行一次(多次)。优选地,每个任务可以配置有将要发布到的AMQP队列。
我们可以通过创建OS计时器事件轻松实现这一点。我关心的是如果这项服务失败了如何恢复。如果它是允许即时安排的话,我们可以使用CRON。
我一直在寻找避免重新发明轮子的方法。如果没有一个项目已经完成,我们将创建一个。不过,这是很常见的事情,所以如果现在还没有人把它放在那里我会感到惊讶。
答案 0 :(得分:2)
Celery解决了这个问题。
celery.schedules可让您定义定期任务。您可以覆盖is_due
来执行schedule once a month之类的操作。您可以schedule tasks to execute at a specific time使用periodic_task
或celery-beat(我认为现在是标准方法)。另一种方法是将eta
参数用于Task.apply_async。