def run(self): def signal_func(sig, stack): raise KeyboardInterrupt signal.signal(signal.SIGTERM, signal_func) try: self._logger.info("Start listening for other host's access.") addr = params.peer_address access_ip = addr.split(':')[0] access_port = int(addr.split(':')[1]) peer_server = ThreadingTCPServer((access_ip, access_port), peers_handler) peer_server.socket = secure_socket(sock=peer_server.socket, server_side=True) listening_thread = threading.Thread( target=peer_server.serve_forever) listening_thread.setDaemon(True) listening_thread.start() self._logger.info("Device monitor start, listening %s." % self._proxy_addr) device_server = TCPServer((self._proxy_ip, self._proxy_port), device_handler) device_server.serve_forever() except KeyboardInterrupt: self._logger.info("Device monitor receive KeyboardInterrupt.") device_server.shutdown() device_server.server_close() peer_server.shutdown() peer_server.server_close() self._logger.info("Device monitor closed.")
def main(address=None): try: LOGGER.info("Server up.") if address is None: ip = socket.gethostbyname(socket.gethostname()) port = params.controller_port address = ip + ':' + str(port) LOGGER.info("Server listening address %s." % address) ip = address.split(':')[0] port = int(address.split(':')[1]) server = ThreadingTCPServer((ip, port), request_handler) server.socket = secure_socket(sock=server.socket, server_side=True) server.daemon_threads = True LOGGER.info("Creating work thread...") serv_thread = threading.Thread(target=server.serve_forever) serv_thread.setDaemon(True) serv_thread.start() LOGGER.info("server is running at %s." % address) a_table = access_table() while True: time.sleep(5) # LOGGER.critical(a_table.print()) except KeyboardInterrupt: LOGGER.info("Receive keyboard interrupt, shut down...") except BaseException: LOGGER.error("Catch unhandled exception.") traceback.print_exc() finally: try: LOGGER.info("Exit handle loop...") server.shutdown() LOGGER.info("Close socket...") server.server_close() except: pass try: LOGGER.info("Wait all request handler threads...") serv_thread.join() except: pass LOGGER.info("Server down.")