【问题标题】:Run celery periodic tasks on one machine only仅在一台机器上运行 celery 定期任务
【发布时间】:2017-02-26 03:33:01
【问题描述】:

我正在开发一个使用 celery 的 django 项目。我在名为 app1 和 app2 的项目中有三个两个大模块。我为在两台不同机器上运行的应用程序创建了两个 celery 应用程序。在 app1 和 app2 中有不同的任务,我想运行不同的机器,它工作正常。但我的问题是我有一些周期性任务。我为他们定义了一个名为periodic_tasks 的队列。我想在单独的第三台机器上运行这些定期任务。或者在第三台机器上我只想运行周期性任务,而这些周期性任务不应该从其他两台机器上执行。可以用芹菜吗?

【问题讨论】:

  • 如果你已经设法配置 celery 以便 app1 任务总是在与 app2 任务不同的机器上运行,为什么你不能对你的周期性任务做同样的事情呢?应该没有什么区别。
  • 周期性任务不在不同的应用程序中,如果与app1相关,则在app1中等等。

标签: celery celery-task celerybeat celeryd


【解决方案1】:

在您的第三台机器上,确保使用 -Q--queues 选项和 periodic_tasks 启动 celery。在 app1 和 app2 上,启动没有 periodic_tasks 队列的 celery。您可以在此处阅读有关队列处理的更多信息:http://docs.celeryproject.org/en/latest/reference/celery.bin.worker.html#cmdoption-celery-worker-Q

【讨论】:

  • 是的,我正在尝试使用 celery -A proj -Q periodic_tasks ,但是当我看到 celery inspect registered 时,它会显示完整项目中所有任务的列表。
  • 嗯,是的,因为所有工作人员共享一个共同的代理,即使他们不处理所有任务。
猜你喜欢
  • 2010-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-02
  • 2016-12-28
  • 2020-09-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多