def serve_forever(self): if is_server_on(): print "Task server is running and only one server can run on this host." return # get config self._config,self._log = init_config() self._dispatcher = Dispatcher( name="dispatcher", log=self._log ) self._disp_init = InitDispatcherThread(log=self._log) self._disp_init.start( groups=self._config.groups, works=self._config.works, dsp=self._dispatcher ) self._event.clear() self._event_stoped.clear() self._log.info("TaskServer Started. ") try: while not self._event.isSet(): try: if self._config.debug_level == 1: self._dispatcher.GetInfo() time.sleep(3) except Exception as e: self._log.exception(e) self._event_stoped.set() self._log.info('TaskServer stopped.') except Exception as e: self._log.exception(e) finally: self._event_stoped.set()
class TaskServer: def __init__(self): self._event = threading.Event() self._event_stoped = threading.Event() self._dispatcher = None self._config = None self._log = None self._disp_init = None #server = ServerInterface(processor=dsp,host=config.listen_ip, port=config.listen_port, log=log ) def stop_server(self,timeout=30): self._event.set() while timeout > 0 and not self._event_stoped.isSet(): time.sleep(1) timeout -= 1 if self._disp_init: self._disp_init.stop(timeout=timeout) if self._dispatcher: self._dispatcher.DeactivateAllWorkshops() def serve_forever(self): if is_server_on(): print "Task server is running and only one server can run on this host." return # get config self._config,self._log = init_config() self._dispatcher = Dispatcher( name="dispatcher", log=self._log ) self._disp_init = InitDispatcherThread(log=self._log) self._disp_init.start( groups=self._config.groups, works=self._config.works, dsp=self._dispatcher ) self._event.clear() self._event_stoped.clear() self._log.info("TaskServer Started. ") try: while not self._event.isSet(): try: if self._config.debug_level == 1: self._dispatcher.GetInfo() time.sleep(3) except Exception as e: self._log.exception(e) self._event_stoped.set() self._log.info('TaskServer stopped.') except Exception as e: self._log.exception(e) finally: self._event_stoped.set()