Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #
- from multiprocessing import Process
- from zmq import Context
- from zmq.backend.cython.constants import REQ, NOBLOCK
- NBR_CLIENTS = 10
- FRONTEND_PORT = '7770'
- FRONTEND_SERVER = '127.0.0.1'
- BACKEND_PORT = '7771'
- BACKEND_SERVER = '127.0.0.2'
- class App:
- def __init__(self):
- self.processes = []
- def start(self, nbr_clients):
- for idx in range(nbr_clients):
- self.start_processes(self.client_task, idx)
- for process in self.processes:
- process.join()
- @staticmethod
- def client_task(index):
- socket = Context().socket(REQ)
- identity = f'Client-{index}'
- socket.identity = identity.encode('utf-8')
- socket.connect(f'tcp://{FRONTEND_SERVER}:{FRONTEND_PORT}')
- socket.send_string('Ping')
- reply = socket.recv_string()
- print(f'{identity}: {reply}')
- def start_processes(self, task, *args):
- process = Process(target=task, args=args)
- self.processes.append(process)
- process.daemon = True
- process.start()
- def main():
- app = App()
- app.start(NBR_CLIENTS)
- ctx = Context()
- socket = ctx.socket(REQ)
- socket.connect(f'tcp://{BACKEND_SERVER}:{BACKEND_PORT}')
- socket.send_string('STOP', NOBLOCK)
- if __name__ == "__main__":
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement