I'm write a zeromq demo with Forwarder device (with pyzmq)
Here are the codes(reference to https://learning-0mq-with-pyzmq.readthedocs.org/en/latest/pyzmq/devices/forwarder.html ):
forwarder.py
import zmqcontext = 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 zmqcontext = 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, timecontext = zmq.Context()socket = context.socket(zmq.PUB)socket.connect('tcp://localhost:5559')# time.sleep(0.01)socket.send('9 hahah')
I run python forwarder.py
, python sub.py
in the terminal
then run python pub.py
, the subscriber can't get the message. However, if I sleep a little time(for example 0.01s) before send, it works.
So my problem is, why have I sleep
before send? thanks.