1import gevent
2from zmq import green as zmq
3
4# Connect to both receiving sockets and send 10 messages
5def sender():
6
7    sender = context.socket(zmq.PUSH)
8    sender.connect('inproc://polltest1')
9    sender.connect('inproc://polltest2')
10
11    for i in range(10):
12        sender.send('test %d' % i)
13        gevent.sleep(1)
14
15
16# create zmq context, and bind to pull sockets
17context = zmq.Context()
18receiver1 = context.socket(zmq.PULL)
19receiver1.bind('inproc://polltest1')
20receiver2 = context.socket(zmq.PULL)
21receiver2.bind('inproc://polltest2')
22
23gevent.spawn(sender)
24
25# Create poller and register both receiver sockets
26poller = zmq.Poller()
27poller.register(receiver1, zmq.POLLIN)
28poller.register(receiver2, zmq.POLLIN)
29
30# Read 10 messages from both receiver sockets
31msgcnt = 0
32while msgcnt < 10:
33    socks = dict(poller.poll())
34    if receiver1 in socks and socks[receiver1] == zmq.POLLIN:
35        print("Message from receiver1: %s" % receiver1.recv())
36        msgcnt += 1
37
38    if receiver2 in socks and socks[receiver2] == zmq.POLLIN:
39        print("Message from receiver2: %s" % receiver2.recv())
40        msgcnt += 1
41
42print("%d messages received" % msgcnt)
43