关于蟒蛇中芹菜的一些困惑



我将芹菜分为以下几部分

  1. 芹菜
  2. 芹菜工人
  3. 芹菜守护进程
  4. 经纪人:拉比姆克或SQS
  5. 队列
  6. 结果后端
  7. 芹菜监视器(花)

我的理解

  1. 当我在 django 中点击芹菜任务时,例如,g tasks.add(1,2)。然后芹菜将该任务添加到队列中。我很困惑上面列表中的 4 或 5
  2. 任务
  3. 进入队列 然后工作人员获取该任务并从队列中删除
  4. 该任务的结果保存在结果后端中

我的困惑

    芹菜
  1. 守护进程和芹菜工人有什么区别
  2. Rabbitmq在做队列的工作吗?这是否意味着任务保存在 Rabitmq 或 SQS 中
  3. 花是做什么的? 它是否监视工作人员或任务或队列或反感

首先,简要解释一下它是如何工作的。代码中运行了一个 celery 客户端。您调用tasks.add(1,2)并创建一个新Celery Task。该任务由Broker传输到队列。是的,队列保留在 Rabbimq 或 SQS 中。Celery Daemon始终在运行,并侦听新任务。当队列中有新任务时,它会启动一个新Celery Worker来执行工作。

要回答您的问题:

  1. 菜守护进程一直在运行,它正在启动芹菜工人。

  2. 是的,Rabitmq 或 SQS 正在执行队列的工作。

  3. 使用芹菜监视器,您可以监视正在运行的任务数,已完成的任务数,队列的大小等。

我认为nstoitsev的答案是善意的,但造成了一些混乱。因此,让我们尝试澄清一下。

  • 芹菜工人是负责执行任务,当配置为在后台运行时,通常称为芹菜守护进程。所以你可以认为这两者是同一件事。为了澄清nstoitsev答案的混淆,每个工作线程都可以有一个可以大于1的并发参数。在这种情况下,每个芹菜工作线程都能够创建 N 个子工作线程,直到达到并发参数以并行执行任务,这通常也称为工作线程。
  • 代理保留队列和交换 这意味着芹菜工人能够使用称为 AMQP 的协议连接到代理并发布或使用消息。
  • Flower 能够使用代理本身监视芹菜集群。基本上能够接收来自所有工人的事件。如果您禁用了结果后端,则 Flower 也可以工作,顺便说一句,这是芹菜芹菜结果后端的默认行为。

希望这有帮助。

相关内容

  • 没有找到相关文章

最新更新