jel*_*ikk 7 worker multiprocessing celery broker celery-task
我最近开始致力于分布式计算,以提高计算速度.我选择了芹菜.但是,我对某些术语不太熟悉.所以,我有几个相关的问题.
来自Celery文档:
什么是任务队列?
...
Celery通过消息进行通信,通常使用经纪人在客户和工人之间进行调解.为了启动任务,客户端向队列添加消息,然后代理将该消息传递给工作者.
什么是客户(这里)?什么是经纪人?为什么通过经纪人传递消息?为什么Celery会使用后端和队列进行进程间通信?
当我通过发出命令执行Celery控制台时
celery worker -A tasks --loglevel=info --concurrency 5
Run Code Online (Sandbox Code Playgroud)
这是否意味着Celery控制台是一个工作进程,它负责5个不同的进程并跟踪任务队列?当新任务被推入任务队列时,此工作人员是否将任务/作业分配给5个进程中的任何进程?
scy*_*ale 12
先说最后一个问题:
celery worker -A tasks --loglevel=info --concurrency 5
Run Code Online (Sandbox Code Playgroud)
你是对的——工人控制着 5 个进程。工作人员在 5 个进程之间分配任务。
“客户端”是异步运行 celery 任务的任何代码。
有两种不同类型的通信 - 当您运行时,apply_async您向代理发送任务请求(最常见的是rabbitmq) - 这基本上是一组消息队列。
当工作人员完成后,他们将结果放入结果后端。
经纪商和结果后端是完全独立的,需要不同类型的软件才能发挥最佳功能。
您可以将 RabbitMQ 用于两者,但是一旦达到一定的消息速率,它将无法正常工作。最常见的组合是用于代理的 RabbitMQ 和用于结果的 Redis。
| 归档时间: |
|
| 查看次数: |
1559 次 |
| 最近记录: |