无法从 Python 连接到 RabbitMQ
Could not connect to RabbitMQ from Python
我正在学习 Python 并且我 运行 遇到了奇怪的问题。我在我的 macOS Sierra 本地机器上 运行ning RabitMQ。从 python 脚本连接到 RabbitMQ 服务器总是失败并出现套接字超时错误。同时我可以通过 telnet 连接。
运行 Python 2.7 和库 kombu:
# test.py
from kombu import Connection
connection = Connection('amqp://127.0.0.1')
connection.connect()
结果:
Thunderstorm:test max$ python test.py
Traceback (most recent call last):
File "test.py", line 6, in <module>
connection.connect()
File "/Library/Python/2.7/site-packages/kombu/connection.py", line 261, in connect
return self.connection
File "/Library/Python/2.7/site-packages/kombu/connection.py", line 802, in connection
self._connection = self._establish_connection()
File "/Library/Python/2.7/site-packages/kombu/connection.py", line 757, in _establish_connection
conn = self.transport.establish_connection()
File "/Library/Python/2.7/site-packages/kombu/transport/pyamqp.py", line 130, in establish_connection
conn.connect()
File "/Library/Python/2.7/site-packages/amqp/connection.py", line 300, in connect
self.drain_events(timeout=self.connect_timeout)
File "/Library/Python/2.7/site-packages/amqp/connection.py", line 464, in drain_events
return self.blocking_read(timeout)
File "/Library/Python/2.7/site-packages/amqp/connection.py", line 468, in blocking_read
frame = self.transport.read_frame()
File "/Library/Python/2.7/site-packages/amqp/transport.py", line 237, in read_frame
frame_header = read(7, True)
File "/Library/Python/2.7/site-packages/amqp/transport.py", line 377, in _read
s = recv(n - len(rbuf))
socket.timeout: timed out
需要几秒钟,returns 超时。此时我在 RabbitMq 日志中看到:
=INFO REPORT==== 1-Mar-2017::12:25:00 ===
accepting AMQP connection <0.23773.4> (127.0.0.1:60600 -> 127.0.0.1:5672)
=WARNING REPORT==== 1-Mar-2017::12:25:08 ===
closing AMQP connection <0.23773.4> (127.0.0.1:60600 -> 127.0.0.1:5672):
client unexpectedly closed TCP connection
防火墙已关闭。 Telnet 连接成功:
Thunderstorm:test max$ telnet 127.0.0.1 5672
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
如何调试这个问题?
通过增加默认连接超时解决了这个问题
Connection('amqp://127.0.0.1/', connect_timeout=15)
我正在学习 Python 并且我 运行 遇到了奇怪的问题。我在我的 macOS Sierra 本地机器上 运行ning RabitMQ。从 python 脚本连接到 RabbitMQ 服务器总是失败并出现套接字超时错误。同时我可以通过 telnet 连接。 运行 Python 2.7 和库 kombu:
# test.py
from kombu import Connection
connection = Connection('amqp://127.0.0.1')
connection.connect()
结果:
Thunderstorm:test max$ python test.py
Traceback (most recent call last):
File "test.py", line 6, in <module>
connection.connect()
File "/Library/Python/2.7/site-packages/kombu/connection.py", line 261, in connect
return self.connection
File "/Library/Python/2.7/site-packages/kombu/connection.py", line 802, in connection
self._connection = self._establish_connection()
File "/Library/Python/2.7/site-packages/kombu/connection.py", line 757, in _establish_connection
conn = self.transport.establish_connection()
File "/Library/Python/2.7/site-packages/kombu/transport/pyamqp.py", line 130, in establish_connection
conn.connect()
File "/Library/Python/2.7/site-packages/amqp/connection.py", line 300, in connect
self.drain_events(timeout=self.connect_timeout)
File "/Library/Python/2.7/site-packages/amqp/connection.py", line 464, in drain_events
return self.blocking_read(timeout)
File "/Library/Python/2.7/site-packages/amqp/connection.py", line 468, in blocking_read
frame = self.transport.read_frame()
File "/Library/Python/2.7/site-packages/amqp/transport.py", line 237, in read_frame
frame_header = read(7, True)
File "/Library/Python/2.7/site-packages/amqp/transport.py", line 377, in _read
s = recv(n - len(rbuf))
socket.timeout: timed out
需要几秒钟,returns 超时。此时我在 RabbitMq 日志中看到:
=INFO REPORT==== 1-Mar-2017::12:25:00 ===
accepting AMQP connection <0.23773.4> (127.0.0.1:60600 -> 127.0.0.1:5672)
=WARNING REPORT==== 1-Mar-2017::12:25:08 ===
closing AMQP connection <0.23773.4> (127.0.0.1:60600 -> 127.0.0.1:5672):
client unexpectedly closed TCP connection
防火墙已关闭。 Telnet 连接成功:
Thunderstorm:test max$ telnet 127.0.0.1 5672
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
如何调试这个问题?
通过增加默认连接超时解决了这个问题
Connection('amqp://127.0.0.1/', connect_timeout=15)