1

我有一个由三台机器组成的集群。我想celery beat在这些上运行。我有几个相关的问题。

  1. Celery 有一个持久调度器的概念。只要我的日程表仅包含 crontab 条目并且由 静态定义CELERYBEAT_SCHEDULE,我是否需要坚持它?
  2. 如果我这样做,那么我是否必须确保此存储在集群的所有机器之间同步?
  3. 是否djcelery.schedulers.DatabaseScheduler自动处理并发的节拍守护进程?也就是说,如果我只使用 运行三个节拍守护程序DatabaseScheduler,我是否可以避免重复任务?
  4. 有没有类似DatabaseScheduler但基于 MongoDB 的东西,没有 Django ORM?就像 Celery 自己的 MongoDB 代理和结果后端一样。
4

1 回答 1

4

目前 Celery 不支持多个并发的 celerybeat 实例。

您必须确保一次只有一个调度程序正在运行一个计划,否则您最终会得到重复的任务。使用集中式方法意味着计划不必同步,并且服务可以在不使用锁的情况下运行。

http://docs.celeryproject.org/en/latest/userguide/periodic-tasks.html

于 2012-12-07T20:40:17.940 回答