#!/usr/bin/env python import traceback import sys import zmq from time import sleep context = zmq.Context() context2 = zmq.Context() sender = context.socket(zmq.PUB) sender.bind("tcp://*:5557") receiver = context2.socket(zmq.SUB) receiver.connect("tcp://localhost:5557") receiver.setsockopt(zmq.SUBSCRIBE, "B") for i in range(1,10): msg = "msg %d" % (i) env = None if i % 2 == 0: env = ["B", msg] else: env = ["A", msg] print "Send Message: ", env sender.send_multipart(env) sender.close() timeout = 0 while timeout < 10: try: print receiver.recv_multipart(zmq.NOBLOCK) except: print traceback.format_exception(*sys.exc_info()) timeout += 1 sleep(2) """ Output: Send Message: ['A', 'msg 1'] Send Message: ['B', 'msg 2'] Send Message: ['A', 'msg 3'] Send Message: ['B', 'msg 4'] Send Message: ['A', 'msg 5'] Send Message: ['B', 'msg 6'] Send Message: ['A', 'msg 7'] Send Message: ['B', 'msg 8'] Send Message: ['A', 'msg 9'] ['Traceback (most recent call last):\n', ' File "./test.py", line 33, in \n print receiver.recv_multipart(zmq.NOBLOCK)\n', ' File "socket.pyx", line 611, in zmq.core.socket.Socket.recv_multipart (zmq/core/socket.c:5181)\n', ' File "socket.pyx", line 514, in zmq.core.socket.Socket.recv (zmq/core/socket.c:4811)\n', ' File "socket.pyx", line 548, in zmq.core.socket.Socket.recv (zmq/core/socket.c:4673)\n', ' File "socket.pyx", line 99, in zmq.core.socket._recv_copy (zmq/core/socket.c:1344)\n', 'ZMQError: Resource temporarily unavailable\n'] ['Traceback (most recent call last):\n', ' File "./test.py", line 33, in \n print receiver.recv_multipart(zmq.NOBLOCK)\n', ' File "socket.pyx", line 611, in zmq.core.socket.Socket.recv_multipart (zmq/core/socket.c:5181)\n', ' File "socket.pyx", line 514, in zmq.core.socket.Socket.recv (zmq/core/socket.c:4811)\n', ' File "socket.pyx", line 548, in zmq.core.socket.Socket.recv (zmq/core/socket.c:4673)\n', ' File "socket.pyx", line 99, in zmq.core.socket._recv_copy (zmq/core/socket.c:1344)\n', 'ZMQError: Resource temporarily unavailable\n'] ['Traceback (most recent call last):\n', ' File "./test.py", line 33, in \n print receiver.recv_multipart(zmq.NOBLOCK)\n', ' File "socket.pyx", line 611, in zmq.core.socket.Socket.recv_multipart (zmq/core/socket.c:5181)\n', ' File "socket.pyx", line 514, in zmq.core.socket.Socket.recv (zmq/core/socket.c:4811)\n', ' File "socket.pyx", line 548, in zmq.core.socket.Socket.recv (zmq/core/socket.c:4673)\n', ' File "socket.pyx", line 99, in zmq.core.socket._recv_copy (zmq/core/socket.c:1344)\n', 'ZMQError: Resource temporarily unavailable\n'] ^CTraceback (most recent call last): File "./test.py", line 37, in sleep(2) KeyboardInterrupt """