Python ZeroMQ PubSub不工作w\Pyzmq
我可能遗漏了一些非常小的东西,但是我无法使用官方的Pyzmq包()在Python中获得一个简单的pub-sub示例 我使用的是最新的ZeroMQ稳定版4.0.3,我能够得到一个简单的例子,在c语言中非常容易地工作。我在Mac和Ubuntu机器上都试过了。我期待任何关于这方面的意见;) 这是我的密码: sub.py 酒吧Python ZeroMQ PubSub不工作w\Pyzmq,python,zeromq,publish-subscribe,pyzmq,Python,Zeromq,Publish Subscribe,Pyzmq,我可能遗漏了一些非常小的东西,但是我无法使用官方的Pyzmq包()在Python中获得一个简单的pub-sub示例 我使用的是最新的ZeroMQ稳定版4.0.3,我能够得到一个简单的例子,在c语言中非常容易地工作。我在Mac和Ubuntu机器上都试过了。我期待任何关于这方面的意见;) 这是我的密码: sub.py 酒吧 假设您先启动订阅服务器,然后启动发布服务器,订阅服务器将永远尝试连接到发布服务器。当publisher出现时,订阅服务器端的连接过程需要一些时间,而您的publisher并不真正
假设您先启动订阅服务器,然后启动发布服务器,订阅服务器将永远尝试连接到发布服务器。当publisher出现时,订阅服务器端的连接过程需要一些时间,而您的publisher并不真正关心这一点。虽然它会尽快发送消息,但订户正在尝试建立连接。当连接建立且订阅服务器准备好接收时,发布服务器已完成其工作 解决方案:通过在发布服务器代码中添加睡眠,给订阅服务器一些时间:
导入zmq
导入时间
ctx=zmq.Context()
s=ctx.socket(zmq.PUB)
s、 绑定(“tcp://*:5567”)
时间。睡眠(1)
对于范围(100)内的i:
s、 发送(“测试”)
就是这样。非常感谢。正如@Stephen所说,为什么C版本可以工作?有没有办法摆脱这种黑客行为,同时保留将多个出版商连接到一个订户的能力?(唉,没有zmq.PAIR
)非常丑陋的解决方案:(haskell绑定也有同样的问题;同样的解决方案:(
import zmq
ctx = zmq.Context()
s = ctx.socket(zmq.SUB)
s.connect("tcp://127.0.0.1:5567")
s.setsockopt(zmq.SUBSCRIBE,'')
while True:
print 'waiting...'
msg = s.recv()
print 'received:', msg
import zmq
ctx = zmq.Context()
s = ctx.socket(zmq.PUB)
s.bind("tcp://*:5567")
for i in range(100):
s.send("test")