【发布时间】:2013-10-26 21:39:15
【问题描述】:
我正在用 Forwarder 设备(使用 pyzmq)编写 zeromq 演示
代码如下(参考https://learning-0mq-with-pyzmq.readthedocs.org/en/latest/pyzmq/devices/forwarder.html):
转发器.py
import zmq
context = zmq.Context()
frontend = context.socket(zmq.SUB)
frontend.bind('tcp://*:5559')
frontend.setsockopt(zmq.SUBSCRIBE, '')
backend = context.socket(zmq.PUB)
backend.bind('tcp://*:5560')
zmq.device(zmq.FORWARDER, frontend, backend)
sub.py
import zmq
context = zmq.Context()
socket = context.socket(zmq.SUB)
socket.connect('tcp://localhost:5560')
socket.setsockopt(zmq.SUBSCRIBE, '')
while True:
print socket.recv()
pub.py
import zmq, time
context = zmq.Context()
socket = context.socket(zmq.PUB)
socket.connect('tcp://localhost:5559')
# time.sleep(0.01)
socket.send('9 hahah')
我在终端运行python forwarder.py、python sub.py
然后运行python pub.py,订阅者收不到消息。但是,如果我在发送前睡一会儿(例如 0.01 秒),它会起作用。
所以我的问题是,为什么我在发送之前要sleep?谢谢。
【问题讨论】: