-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathclient.py
50 lines (38 loc) · 1.72 KB
/
client.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
41
42
43
44
45
46
import zmq
import sys
import time
import random
if __name__ == '__main__':
client_number, server_number, requests, port_number = sys.argv[1:]
# client_number = int(client_number)
# server_number = int(server_number)
port_number = eval(port_number)
requests = eval(requests)
# print(requests)
context = zmq.Context()
socket = context.socket(zmq.REQ)
socket.connect(f"tcp://localhost:{port_number[server_number][2]}")
print(f"Client {client_number} is connected to the server {server_number}")
start_time = time.time()
for request in requests:
if request["type"] == "sleep": # we emulate a slow network by introducing delay
duration = random.random()
print(f"Client {client_number} is sleeping for {duration} seconds")
time.sleep(duration)
else:
socket.send_json({"type": request["type"],
"key": request["key"],
"value": request["value"]})
print(f"Client {client_number} sent request: {request}, waiting for response...")
response = socket.recv_string()
# while 1:
# response = socket.recv_string(zmq.NOBLOCK)
# if response == "ping":
# socket.send_string("pong")
# else:
# socket.send_string("gotcha")
# break
# the feedback will be displayed in green color!
print(f"\033[32mClient {client_number} received response: {response}\033[0m")
end_time = time.time()
print(f"\033[91mClient {client_number} has finished all the requests in {end_time - start_time} seconds\033[0m")