我将芹菜分为以下几部分
- 芹菜
- 芹菜工人
- 芹菜守护进程
- 经纪人:拉比姆克或SQS
- 队列
- 结果后端
- 芹菜监视器(花)
我的理解
- 当我在 django 中点击芹菜任务时,例如,g tasks.add(1,2)。然后芹菜将该任务添加到队列中。我很困惑上面列表中的 4 或 5 任务
- 进入队列 然后工作人员获取该任务并从队列中删除
- 该任务的结果保存在结果后端中
我的困惑
- 芹菜
- 守护进程和芹菜工人有什么区别
- Rabbitmq在做队列的工作吗?这是否意味着任务保存在 Rabitmq 或 SQS 中
- 花是做什么的? 它是否监视工作人员或任务或队列或反感
首先,简要解释一下它是如何工作的。代码中运行了一个 celery 客户端。您调用tasks.add(1,2)
并创建一个新Celery Task
。该任务由Broker
传输到队列。是的,队列保留在 Rabbimq 或 SQS 中。Celery Daemon
始终在运行,并侦听新任务。当队列中有新任务时,它会启动一个新Celery Worker
来执行工作。
要回答您的问题:
- 芹
菜守护进程一直在运行,它正在启动芹菜工人。
是的,Rabitmq 或 SQS 正在执行队列的工作。
使用芹菜监视器,您可以监视正在运行的任务数,已完成的任务数,队列的大小等。
我认为nstoitsev的答案是善意的,但造成了一些混乱。因此,让我们尝试澄清一下。
- 芹菜工人是负责执行任务,当配置为在后台运行时,通常称为芹菜守护进程。所以你可以认为这两者是同一件事。为了澄清nstoitsev答案的混淆,每个工作线程都可以有一个可以大于1的并发参数。在这种情况下,每个芹菜工作线程都能够创建 N 个子工作线程,直到达到并发参数以并行执行任务,这通常也称为工作线程。
- 代理保留队列和交换 这意味着芹菜工人能够使用称为 AMQP 的协议连接到代理并发布或使用消息。
- Flower 能够使用代理本身监视芹菜集群。基本上能够接收来自所有工人的事件。如果您禁用了结果后端,则 Flower 也可以工作,顺便说一句,这是芹菜芹菜结果后端的默认行为。
希望这有帮助。