2016-04-26 72 views
1

我已经划分芹菜放入以下几个部分关于芹菜蟒蛇

  1. 芹菜
  2. 芹菜工人
  3. 芹菜守护
  4. 经纪人有些困惑
  5. 芹菜显示器(花)

我的理解

  1. 当我打芹菜任务在Django E,G tasks.add(1,2)。然后芹菜将该任务添加到队列中。我很困惑,如果那是4或5上面所列内容
  2. 当任务去然后排队的工人获取任务,并从队列中删除
  3. 该任务的结果保存在结果后端

我的困惑

  1. 请告诉我守护的芹菜和芹菜工人之间的差异
  2. 是RabbitMQ的做队列的工作。这是否意味着任务可以保存在Rabitmq或SQS中
  3. 花做什么。它是否监视工作人员或任务或队列或解析

回答

0

首先,解释它是如何工作的。您的代码中运行了一个芹菜客户端。您致电tasks.add(1,2)并创建新的Celery Task。该任务由Broker转移到队列中。是的,队列是坚持在Rabbimq或SQS。 Celery Daemon始终在运行并正在侦听新任务。当队列中有新任务时,它会启动新的Celery Worker来执行该工作。

回答您的问题:

  1. 芹菜守护进程始终运行和它的开始芹菜工人。

  2. 是Rabitmq或SQS正在做一个队列的工作。

  3. 随着芹菜监视器可以监视多少任务正在运行,有多少人完成的,什么是队列的大小等

0

我觉得从nstoitsev答案有良好的意愿,但造成一些混乱。所以我们试着澄清一下。

  • Celery worker是执行 任务,当被配置成在背景比通常被称为 芹菜守护程序运行的过程芹菜RESPONSABLE。所以你可以考虑这两件事情是一回事。 为了澄清他对nstoitsev的回答的困惑,每个worker可以有一个大于1的并发参数。当这种情况发生时,每个celery worker都可以创建N child worker直到达到并发参数来执行任务平行,这通常也被称为工人。
  • 代理持有队列和交换意味着celery worker能够使用名为AMQP的协议连接到代理并发布或使用消息。
  • 花能够使用经纪人本身监控芹菜群集。基本上有能力来自所有工人的receive events。如果你有结果后端禁用,那么btw是默认行为,芹菜Celery result backend也适用于花卉。

希望这会有所帮助。

+0

可以手动重试失败的任务或将失败的任务移动到另一个队列稍后重新登录 – Karl

+0

嗨,这将是另一个问题,堆栈溢出规则明确表明不使用注释作为聊天。无论如何,这个文档页面可以帮助你的问题。 http://docs.celeryproject.org/en/latest/userguide/calling.html?highlight=retry#retry-policy –