ZeroMQ: have to sleep before send
Question: 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 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')
    

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.


Answer: It's known as [Slow Joiner](http://zguide.zeromq.org/page%3aall#Getting-the-
Message-Out) syndrome. Read the
[guide](http://zguide.zeromq.org/page%3aall#Getting-the-Message-Out), there
are ways to avoid it using pub/sub
[syncing](http://zguide.zeromq.org/page%3aall#Node-Coordination).

