Advertisement
Uno-Dan

Logging clients demo

Apr 23rd, 2019
199
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.27 KB | None | 0 0
  1.  
  2. import logging
  3.  
  4. from multiprocessing import Process
  5.  
  6. from zmq import Context
  7. from zmq.log.handlers import PUBHandler
  8. from zmq.backend.cython.constants import PUB
  9.  
  10. import time
  11.  
  12. NBR_CLIENTS = 5
  13. FRONTEND_PORT = '17770'
  14. FRONTEND_SERVER = '127.0.0.1'
  15.  
  16.  
  17. class App:
  18.     def __init__(self):
  19.         self.processes = []
  20.  
  21.     def spawn(self, task, *args):
  22.         process = Process(target=task, args=args)
  23.         self.processes.append(process)
  24.         process.daemon = True
  25.         process.start()
  26.  
  27.     def start(self, nbr_clients):
  28.         for idx in range(nbr_clients):
  29.             self.spawn(self.client_task, idx)
  30.  
  31.         for process in self.processes:
  32.             process.join()
  33.  
  34.     @staticmethod
  35.     def client_task(idx):
  36.         logger = logging.getLogger()
  37.         context = Context()
  38.         socket = context.socket(PUB)
  39.         socket.connect(f'tcp://{FRONTEND_SERVER}:{FRONTEND_PORT}')
  40.         handler = PUBHandler(socket)
  41.         logger.addHandler(handler)
  42.  
  43.         while True:
  44.             msg = f'THIS IS A TEST MESSAGE FROM CLIENT {idx}'
  45.             logger.setLevel(logging.DEBUG)
  46.             logger.error(msg)
  47.             time.sleep(5)
  48.  
  49.  
  50. def main():
  51.     app = App()
  52.     app.start(NBR_CLIENTS)
  53.  
  54.  
  55. if __name__ == "__main__":
  56.     main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement