57

我是 celery 的新手。我知道如何安装和运行一台服务器,但我需要将任务分发到多台机器上。我的项目使用 celery 将传递给 Web 框架的用户请求分配给不同的机器,然后返回结果。我阅读了文档,但没有提到如何设置多台机器。我错过了什么?

4

2 回答 2

60

我的理解是,您的应用程序会将请求推送到排队系统(例如 rabbitMQ)中,然后您可以在不同的机器上启动任意数量的工作人员(可以访问与提交任务的应用程序相同的代码)。他们将从消息队列中挑选出任务,然后开始处理它们。完成后,他们将更新墓碑数据库。

这样做的结果是你不需要做任何特别的事情来启动多个工人。只需在不同的相同(相同源代码树)机器上启动它们。

具有消息队列的服务器不必与具有工人的服务器相同,也不必与提交作业的机器相同。您只需将消息队列的位置放入您celeryconfig.py的,所有机器上的所有工作人员都可以从队列中提取作业来执行任务。

于 2012-04-21T17:21:18.130 回答
2

我部署它的方式是这样的:

  1. 在 heroku 实例上克隆你的 django 项目(这将运行前端)
  2. 将 RabitMQ 添加为附加组件并对其进行配置
  3. 将您的 django 项目克隆到另一个 heroku 实例(将其称为 worker),您将在其中运行 celery 任务
于 2017-04-26T11:42:23.327 回答