Docker -Pika BlockingConnection错误

时间:2018-05-15 18:28:20

标签: python docker rabbitmq pika

我有一个运行python脚本的docker容器。该脚本提供了一个AMQP url,Pika将其用作阻塞连接的pika.URLParameters。当我在我的计算机上运行脚本时,它工作正常。因为我已经停靠了它并且监视容器的日志,我看到在尝试连接时脚本会发出声音。这是我在脚本中使用的代码:

AMQP_URL = __prefix__ + __username__ + ":" + __password__ + __virtual__host + session
("The programm hangs here")
connection = pika.BlockingConnection(pika.URLParameters(AMQP_URL))
channel = connection.channel()
channel.exchange_declare(
                          exchange = "tmp.topic_2",
                          exchange_type = "topic"
                        )

result = channel.queue_declare(exclusive = True)

queue_name = result.method.queue

channel.queue_bind(
                    exchange = "amq.topic",
                    queue = queue_name,
                    routing_key = "ui.#"
                  )
channel.basic_consume(
                      UiCallback,
                      queue= queue_name,
                      no_ack=True
                     )
channel.start_consuming()

我已将pika包含在要求中。我想知道问题是什么: 也许容器无法访问网络?也许我需要在这个或另一个容器中设置一个rabbitmq服务器? 谢谢你的帮助

1 个答案:

答案 0 :(得分:0)

您需要将环境变量RABBIT_HOST_IP设置为运行Docker容器的“主机”的IP。

我的理解是,阻塞连接将值发送回调用它的机器,这可以正常工作,但是如果您在容器内,则发送回的消息将发送到无法在机器上访问的docker容器的IP。 / p>