Пример #1
0
    def handle_request(self, func):
        while not self._stop_event or not self._stop_event.is_set():
            if not self.listen_sock:
                self.listen_sock = self._get_listen_socket(listen_num=50)

            if not self.listen_sock:
                self.logger.error("failed to listen {}:{}".format(
                    self.ip, self.port))
                return

            conn, client_address = self.listen_sock.accept()
            self.logger.info(" # Connected with {}".format(client_address))
            try:
                connected_socket = self._create_socket_instance(conn)

                data = connected_socket.recv()
                ret_check_recv = self.bypass_check_data(data)
                if ret_check_recv:
                    connected_socket.send(ret_check_recv)
                else:
                    response = func(data)
                    if response:
                        connected_socket.send(response)

            except Exception as e:
                Logger.write_exception_log(self.logger, e,
                                           "# handle_request.exception")
                try:
                    self.listen_sock.close()
                except Exception as c_e:
                    self.logger.error(" # close.exception : {}".format(c_e))
                self.listen_sock = None

            finally:
                conn.close()
Пример #2
0
def check_mod_server(ip,
                     port,
                     mod_name="NoName",
                     show_send_recv_dat_=True,
                     logger=Logger.get_stdout_logger()):
    if check_port(ip, port):
        check_rst = False
        try:
            recv = JsonSocket.json_send_and_recv(
                ip,
                port, {"cmd": "check"},
                show_send_recv_dat_=show_send_recv_dat_)

            if recv:
                res = recv[0]
                if res is not None and "state" in res and res[
                        "state"] == "healthy":
                    check_rst = True
        except Exception as e:
            Logger.write_exception_log(
                logger, e,
                "check_mod_server({}, {}, {})".format(ip, port, mod_name))

        if check_rst:
            logger.info(" # {}://{}:{:d} is in healthy state.".format(
                mod_name, ip, port))
        else:
            logger.info(" # {}://{}:{:d} is NOT in healthy state.".format(
                mod_name, ip, port))
        return check_rst
    else:
        logger.info(" @ {}://{}:{:d} DOES NOT exist.".format(
            mod_name, ip, port))
        return False
Пример #3
0
    def _get_listen_socket(self, listen_num=5):
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        server_address = (self.ip, self.port)

        sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

        try:
            sock.bind(server_address)
        except Exception as e:
            Logger.write_exception_log(self.logger, e)
            return None

        sock.listen(listen_num)

        self.logger.info("listen : {}, {}".format(self.ip, self.port))
        return sock