gpt4 book ai didi

docker - 为什么我在尝试从另一个容器连接到 RabbitMQ 时得到 `IncompatibleProtocolError`?

转载 作者:行者123 更新时间:2023-12-02 19:23:48 25 4
gpt4 key购买 nike

我正在构建一个 docker-compose 文件。我启动了一个 RabbitMQ 容器并将必要的端口绑定(bind)到主机。然后我试图从另一个容器连接到它。

因此,我设置了 network_mode host 的选项如下图,所以我可以使用localhost作为队列的主机名。下面你可以看到 docker-compose yaml 文件:

version: '3'

services:
queue:
image: "rabbitmq:3"
ports:
- "5672:5672"
- "15672:15672"
worker:
image: "some_image"
network_mode: "host"
depends_on:
- queue

当我运行代码时,worker 尝试使用主机名 localhost 连接到 RabbitMQ我得到一个 IncompatibleProtocolError: StreamLostError: ('Transport indicated EOF',)错误。具体来说:
File "/usr/local/lib/python3.7/site-packages/pika/adapters/blocking_connection.py", line 359, in __init__
recommender_filtering_worker_1 | self._impl = self._create_connection(parameters, _impl_class)
recommender_filtering_worker_1 | File "/usr/local/lib/python3.7/site-packages/pika/adapters/blocking_connection.py", line 450, in _create_connection
recommender_filtering_worker_1 | raise self._reap_last_connection_workflow_error(error)
recommender_filtering_worker_1 | pika.exceptions.IncompatibleProtocolError: StreamLostError: ('Transport indicated EOF',)

任何帮助将不胜感激。

最佳答案

问题似乎是您的应用程序不会等待队列“准备好”接受连接。 depends_on block 确保您的队列容器在工作人员之前启动,但它不授予您的队列准备好接受连接。

这里可以采用不同的解决方案。继续排队,直到它回答(不是经常,但可能每 10-15 秒一次)或添加一个“wait_for”脚本(https://github.com/eficode/wait-for)。

关于docker - 为什么我在尝试从另一个容器连接到 RabbitMQ 时得到 `IncompatibleProtocolError`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57885699/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com