[zeromq-dev] zero-mq: socket.recv() call is blocking

Karthik Sharma karthik.sharma at gmail.com
Wed Sep 24 10:30:52 CEST 2014

I am trying to use zero-mq.My requirement is very simple.I want to be able
to communicate between two peers in a network.I came across this program in
the examples in the book.

`$ pub_server.py`

    import zmq
    import random
    import sys
    import time

    port = "5556"
    if len(sys.argv) > 1:
        port =  sys.argv[1]

    context = zmq.Context()
    socket = context.socket(zmq.PUB)
    socket.bind("tcp://*:%s" % port)

    while True:
        topic = random.randrange(9999,10005)
        messagedata = random.randrange(1,215) - 80
        print "%d %d" % (topic, messagedata)
        socket.send("%d %d" % (topic, messagedata))


    import sys
    import zmq

    port = "5556"
    if len(sys.argv) > 1:
        port =  sys.argv[1]

    # Socket to talk to server
    context = zmq.Context()
    socket = context.socket(zmq.SUB)

    print "Collecting updates from weather server..."
    socket.connect ("tcp://localhost:%s" % port)

    # Subscribe to zipcode, default is NYC, 10001
    topicfilter = "10001"
    socket.setsockopt(zmq.SUBSCRIBE, topicfilter)

    # Process 5 updates
    total_value = 0
    for update_nbr in range (5):
        string = socket.recv()
        topic, messagedata = string.split()
        total_value += int(messagedata)
        print ('{} {}'.format(topic, messagedata))

    print('Avg data value for topic {} was {}'.format(topicfilter,

The problem I have with this model is that

`string = socket.recv()`

blocks till I recieve a message.I don't want this to happen.I want the
messages to be queued up on the recieve side so that I can get it out of
the queue (or something similar to this)

Is there some model in zero-mq that allows this?

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.zeromq.org/pipermail/zeromq-dev/attachments/20140924/db8daedf/attachment.htm>

More information about the zeromq-dev mailing list