【发布时间】:2016-04-01 17:06:05
【问题描述】:
我有以下
a) 安装在 Mac Yosrmite 机器上的 rabbitmq-server 和 Pika。 我有一个 rabbutmq.config /usr/local/etc/rabbitmq/rabbitmq.config 我有声明: {loopback_users, []}
b) 在树莓派上,我安装了 pika。我还安装了rabbtmq-server。
使用 pika 的 send.py 和 receive.py 在两台机器上本地工作。
从 Mac 发送到 RPi 有效;但是,从 RPi 到 Mac 的发送失败如下:
Traceback(最近一次调用最后一次): 文件“send.py”,第 5 行,在 '192.168.1.4')) init 中的文件“/usr/local/lib/python2.7/dist-packages/pika/adapters/blocking_connection.py”,第 339 行 self._process_io_for_connection_setup() _process_io_for_connection_setup 中的文件“/usr/local/lib/python2.7/dist-packages/pika/adapters/blocking_connection.py”,第 374 行 self._open_error_result.is_ready) _flush_output 中的文件“/usr/local/lib/python2.7/dist-packages/pika/adapters/blocking_connection.py”,第 395 行 引发异常。ConnectionClosed() pika.exceptions.ConnectionClosed
========================================== 我的防火墙未在 Mac 中启用。 服务器日志中没有记录错误。
send.py 代码为:
#!/usr/bin/env python
import pika
connection = pika.BlockingConnection(pika.ConnectionParameters(
'192.168.1.4'))
channel = connection.channel()
channel.queue_declare(queue='hello')
channel.basic_publish(exchange='',
routing_key='hello',
body='Hello World!')
print(" [x] Sent 'Hello World!'")
connection.close()
============================ 我在两台机器上都得到了端口上的活动: sudo tcpdump 端口 5672
在树莓派上 15:09:05.394815 IP raspberrypi.home.40483 > ArnoldBileysMBP.home.amqp:标志 [S],seq 1428528534,win 29200,选项 [mss 1460,sackOK,TS val 1626318 ecr 0,nop,wscale 6],长度 0 15:09:05.460755 IP ArnoldBileysMBP.home.amqp > raspberrypi.home.40483:标志 [R.],seq 0,ack 1428528535,win 0,长度 0
在 Mac 上 11:09:05.547322 IP raspberrypi.home.40483 > arnoldbileysmbp.home.amqp:标志 [S],seq 1428528534,win 29200,选项 [mss 1460,sackOK,TS val 1626318 ecr 0,nop,wscale 6],长度 0 11:09:05.547362 IP arnoldbileysmbp.home.amqp > raspberrypi.home.40483:标志 [R.],seq 0,ack 1428528535,win 0,长度 0
任何帮助将不胜感激。
【问题讨论】:
-
感谢 Gabriele,我按照建议添加了测试/测试管理员并确保启用 gui。我将连接语句更改为:credentials = pika.PlainCredentials('test', 'test') connection = pika.BlockingConnection(pika.ConnectionParameters("192.168.1.4", 5672, '/', credentials)) 我总是可以发送使用 rpi 上的服务器从 mac 到 rpi。我没有在 rpi 上通过 telnet 到 mac 进行测试。但是,我确实看到,如 tcpdump 中所示,rpi 端口上的发送和 mac 上的相应收据。如上所述,我仍然失败了。