try: fwd = Forwarder(args, logger) # Create a packet forwarder fwd.start() # Start the forwarder writer = Writer(args, logger) # Create the db writer thread writer.start() # Start the writer thread queues = [fwd.q, writer.q] with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: logger.debug('Opened socket') s.bind(('', args.port)) logger.debug('Bound to port %s', args.port) s.listen() logger.debug('Listening to socket') while writer.is_alive(): (conn, addr) = s.accept() # Wait for a connection logger.info('Connection from %s', addr) thrd = Reader(conn, addr, logger, queues) # Create a new reader thread thrd.start() # Start the new reader thread logger.info('n Threads %s', threading.active_count()) while threading.active_count( ) > args.maxConnections: # don't overload the system time.sleep( 1 ) # Wait for a thread to die before accepting anything else except: logger.exception('Unexpected exception while listening')