首页 文章

芹菜如何运作?

提问于
浏览
6

我最近开始致力于分布式计算,以提高计算速度 . 我选择了Celery . 但是,我对某些术语不太熟悉 . 所以,我有几个相关的问题 .

来自Celery docs

什么是任务队列? ...芹菜通过消息进行通信,通常使用经纪人在客户和 Worker 之间进行调解 . 为了启动任务,客户端向队列添加消息,然后代理将该消息传递给工作者 .

什么是客户(这里)?什么是经纪人?为什么通过经纪人传递消息?为什么Celery会使用后端和队列进行进程间通信?

当我通过发出命令执行Celery控制台时

celery worker -A tasks --loglevel=info --concurrency 5

这是否意味着Celery控制台是一个工作进程,它负责5个不同的进程并跟踪任务队列?当新任务被推入任务队列时,此工作人员是否将任务/作业分配给5个进程中的任何进程?

1 回答

  • 2

    最后一个问题:

    celery worker -A tasks --loglevel=info --concurrency 5
    

    你是对的 - Worker 控制5个进程 . 工作人员在5个进程中分配任务 .

    “客户端”是异步运行芹菜任务的任何代码 .

    有两种不同类型的通信 - 当您运行_253333_时,您向代理(最常见的是rabbitmq)发送任务请求 - 这基本上是一组消息队列 .

    当 Worker 完成后,他们将结果放入结果后端 .

    代理和结果后端非常独立,需要不同类型的软件才能最佳地运行 .

    您可以将RabbitMQ用于两者,但是一旦达到一定的消息速率,它将无法正常工作 . 最常见的组合是RabbitMQ for broker和Redis for results .

相关问题