pika.BlockingConnection()在容器内部失败,在VM中运行良好

时间:2016-04-10 18:11:40

标签: docker rabbitmq containers pika python-pika

我正在尝试在容器内使用rabbitmq。我安装了所需的库,然后尝试创建一个BlockingConnection,但它失败了。当我在任何VM或物理主机上尝试它时,同样的事情。它仅使用容器失败。以下是步骤: -

安装所需的包: -

$ docker run -it ubuntu:15.10 /bin/bash
root@d3d44e2656a9#
root@d3d44e2656a9# sudo apt-get -y install python-pip rabbitmq-server wget \
                   && pip install pika

接下来,我尝试创建一个BlockingConnection,但它失败了。但同样的事情在虚拟机上运行。

root@d3d44e2656a9# python
Python 2.7.6 (default, Jun 22 2015, 17:58:13) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pika
>>> pika.BlockingConnection(pika.ConnectionParameters('127.0.0.1'))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/lib/python2.7/dist-packages/pika/adapters/blocking_connection.py", line 339, in __init__
    self._process_io_for_connection_setup()
  File "/usr/local/lib/python2.7/dist-packages/pika/adapters/blocking_connection.py", line 374, in _process_io_for_connection_setup
    self._open_error_result.is_ready)
  File "/usr/local/lib/python2.7/dist-packages/pika/adapters/blocking_connection.py", line 395, in _flush_output
    raise exceptions.ConnectionClosed()
pika.exceptions.ConnectionClosed
>>>

我不确定容器内的问题是什么。我正在使用ubuntu:15.10图像。任何有关这方面的反馈都会非常有用。

1 个答案:

答案 0 :(得分:1)

看起来rabbitmq-server进程没有运行。由于它是一个容器,因此默认情况下不会运行其他进程,而不是在entrypoint中指定的进程。一旦我启动了rabbitmq-server,它就开始正常工作了。

root@d3d44e2656a9# /etc/init.d/rabbitmq-server start

现在我需要做的就是确保在我的入口点,我首先启动rabbitmq-server进程,然后启动依赖服务。这应该适用于容器内部署的任何内容。