python - 多个 celery 远程 worker

标签 python rabbitmq celery

这个问题是关于在不同的机器上使用多个远程 Celery worker。 App 的实现可以概念化为:

enter image description here

我的应用程序(生产者)将每 5 分钟向队列中添加多个任务(比如 50 个)(假设一个 python for 循环每 5 分钟迭代一次要异步执行的任务列表间隔)。我希望 celery worker (将是远程机器)在推送这些任务后立即接手。

我的问题是 Celery/RabbitMQ 会自动处理任务分配(因此没有 Worker 会选择已经被队列中的工作人员选择的任务 - 即确保工作不会重复)并分配任务均匀分布,这样就不会在其他 worker 努力工作时让任何 worker 偷懒,或者是否必须在设置中对这些进行配置/编程?*

如果有人能转发给我相关文档,我将不胜感激(我正在查看 Celery 文档,但在这种情况下找不到关于远程 celery worker 的具体信息。)

最佳答案

自动,但您需要了解此处描述的预取功能:http://docs.celeryproject.org/en/latest/userguide/optimizing.html#prefetch-limits , 一直读到页尾。

简而言之,预取在两个级别上工作:worker 级别和进程级别,因为 worker 可能有多个进程。要在 worker 级别禁用预取,您需要在 celery 设置中指定 worker_prefetch_multiplier = 1,要在进程级别禁用,您需要在 worker 的命令行中指定 -Ofair 选项。

关于python - 多个 celery 远程 worker ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47013843/

相关文章:

python QLineEdit 文本颜色

python - 如何将Python列表作为column_name和值传递给MySQL插入语句

singleton - celery :任务单例?

django - celery 任务更新

python - 从连续运行的 flask 应用程序中异步调用函数

python - SQL炼金术 : How to make an integer column auto_increment (and unique) without making it a primary key?

Python setuptools 正在从 Windows 上的路径参数中删除斜杠

erlang - Windows 无法在本地计算机上启动 RabbitMQ 服务

docker - 启动 RabbitMQ Docker 容器时如何添加初始用户?

django - 无法连接到 amqp ://guest:**@127. 0.0.1:5672//: [Errno 111] 连接被拒绝