class Controller: # requestQueue is shared queue among all processes def __init__(self, database: DB): if not isinstance(database, DB): raise TypeError('Controller was not supplied a DB object') self.manifest = Manifest() self.request_queue = multiprocessing.Queue() self.listener = Listener(self.request_queue) self.database = database def _create_request_processor(self): req = RequestProcessor(self.request_queue, self.database) req.process_requests() def create_request_processors(self): processes = [] for i in range(self.manifest.number_of_request_processors): log(f"creating request processor {str(i)}", level=INFO) # print('Creating processes %d' % i) processes.append(Process(target=self._create_request_processor)) for i in processes: i.start() def create_listener(self): log('creating request listener', level=INFO) self.listener.create_listener() thread = Thread(target=self.listener.listen) thread.start() thread.join()