forked from irr/python-labs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrequest_reply_processes.py
41 lines (34 loc) · 1.22 KB
/
request_reply_processes.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import zmq
import time
import sys
from multiprocessing import Process
def server(port="5556"):
context = zmq.Context()
socket = context.socket(zmq.REP)
socket.bind("tcp://*:%s" % port)
print "Running server on port: ", port
# serves only 5 request and dies
for reqnum in range(5):
# Wait for next request from client
message = socket.recv()
print "Received request #%s: %s" % (reqnum, message)
socket.send("World from %s" % port)
def client(ports=["5556"]):
context = zmq.Context()
print "Connecting to server with ports %s" % ports
socket = context.socket(zmq.REQ)
for port in ports:
socket.connect ("tcp://localhost:%s" % port)
for request in range (20):
print "Sending request ", request,"..."
socket.send ("Hello")
message = socket.recv()
print "Received reply ", request, "[", message, "]"
time.sleep (1)
if __name__ == "__main__":
# Now we can run a few servers
server_ports = range(5550,5558,2)
for server_port in server_ports:
Process(target=server, args=(server_port,)).start()
# Now we can connect a client to all these servers
Process(target=client, args=(server_ports,)).start()