Ber*_*ner 11
事实证明,Celery 节点是间接记录在这里的:
简而言之,Celery 使用了一组在构建分布式工作系统时有助于理解的术语。
有助于规划事情的术语包括:
此时需要注意的是,Client、Broker、Worker都可以在不同的机器上,而且实际上可以有多个Client在不同的机器上,也可以有多个Worker在不同的机器上,只要它们使用同一个Broker即可。
那么,应用程序通常会为 Broker 配置 URL,也就不足为奇了。这就是所有应用程序,所有客户端和工作人员都使用相同的 Broker URL,因此都使用相同的 Broker。
客户端通过代理发送(生成)消息,请求运行任务,工作人员读取(消费)这些消息。
现在这些术语都有了一席之地:
每个Worker可以通过维护一个执行池同时处理多个任务。该池可能是线程,或者(默认情况下)它是子进程。因此,一个 Worker 可能有多个 Pool 进程作为子进程。
Celery 的一个(我的)挫败感是,您可以与 Workers 进行自由通信,但不能与 Worker 执行池中正在运行的任务进行通信(出于这个原因,我正在为交互式任务创建一个新的 Task 类,但它仍在不断发展)。
节点只是集群中的一个工作线程。简而言之,节点=工作者。集群是许多并行运行的工作人员(celery multi按照我介绍的文档使用)。集群只是一种在同一台机器上启动、停止和管理多个工作线程的便捷方式。
可能有许多集群都消耗来自同一个代理的任务,并且它们可能位于同一台机器上(尽管有人会想知道为什么)或位于不同的机器上。
这就是 Celery 节点......(在其最完整的上下文中)。
小智 5
当您运行 celery worker 时,它会创建一个父进程来管理正在运行的任务。这个过程处理簿记功能,如发送/接收队列消息、注册任务、杀死挂起的任务、跟踪状态等。
然后,该进程产生 N 个实际执行各个任务的子工作进程。该数字由-c启动工作程序时的参数决定:http :
//docs.celeryproject.org/en/latest/userguide/workers.html#concurrency
子进程可以使用多种策略实现,并在使用-P参数启动工作程序时进行配置。可能的值包括:prefork、eventlet、gevent、threads/solo。
| 归档时间: |
|
| 查看次数: |
5549 次 |
| 最近记录: |