def start_service(host, port, bv): info("Starting service on {}:{}".format(host, port)) server = xmlrpc.server.SimpleXMLRPCServer( (host, port), requestHandler=BinjaGefRequestHandler, logRequests=False, allow_none=True) server.register_introspection_functions() server.register_instance(Gef(server, bv)) dbg("Registered {} functions.".format(len(server.system_listMethods()))) while True: if hasattr(server, "shutdown") and server.shutdown == True: break server.handle_request() return
def run_server(): server.socket.settimeout(float(1)) # Don't hang if client fails server.handle_request() # First request and attempt at second server.handle_request() # Retried second request
def run_server(): server.socket.settimeout(float(1)) server.handle_request() server.handle_request()
def serve_forever(self, signals=None): """ \param signals which signals will cause normal exit """ if signals is not None: for s in signals: self._logger.debug("Registering %s for %s signal...", _interrupt_raiser, s) signal.signal(s, _interrupt_raiser) self._logger.info("Starting %d worker(s) listening on \"%s:%d\"...", self._worker_count, *self._addr) with self._hub.context(capacity=self._capacity()): class XMLRPCServer(xmlrpc.server.SimpleXMLRPCServer): def __init__(self, *args, **kwargs): super(XMLRPCServer, self).__init__(*args, **kwargs) self.request_timeout = False def handle_request(self): self.request_timeout = False super(XMLRPCServer, self).handle_request() def handle_timeout(self): self.request_timeout = True server = XMLRPCServer(addr=self._addr, allow_none=True) server.timeout = self._query_interval server.register_function(self._add_task, name='add_task') self._logger.debug("Starting threads...") workers = [] for i in range(self._worker_count): thread = threading.Thread(target=self._worker, args=(i,)) thread.start() workers.append(thread) self._logger.debug("%d workers were started.", self._worker_count) self._logger.debug("Starting xmlrpc server...") try: self._logger.debug("Entering task handling loop...") while True: if not server.request_timeout: self._logger.debug("Waiting for request...") server.handle_request() if not server.request_timeout: self._logger.debug("Request was handled.") if self._need_registration.is_set(): self._logger.debug("Registration is needed...") try: self._logger.debug("Trying to register machine...") self._hub.register_machine(capacity=self._capacity()) self._logger.debug("Machine was successfully registered.") self._need_registration.clear() except Exception as e: self._logger.exception("Unable to register due to %s.", e) else: self._logger.debug("Trying to ping...") try: if not self._hub.ping(): self._need_registration.set() self._logger.debug("Pinged.") except Exception as e: self._logger.exception("Unable to ping due to %s.", e) self._need_registration.set() except (KeyboardInterrupt, _InterruptedError) as e: self._logger.debug("Exiting.") self._quit.set() self._logger.debug("Joining workers...") for worker in workers: worker.join() self._logger.info("Completed.")