def __init__(self, listen_add, callback, max_client=1000, reuse_add=True, timeout=15, autoreload=False): host, port = listen_add _server = simple_server.make_server(host, port, partial(wsgi_callback, callback)) _server.timeout = timeout _server.request_queue_size = max_client _server.allow_reuse_address = reuse_add set_close_exec(_server.fileno()) self._server = _server self.autoreload = autoreload
def __init__(self): self._socket = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) set_close_exec(self._socket.fileno()) sock_path = genearte_sock_path() try: os.remove(sock_path) except OSError as e: print(e) self._socket.bind(genearte_sock_path()) self._socket.listen(50)
def __init__(self): self._socket = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) set_close_exec(self._socket.fileno()) sock_path = genearte_sock_path() try: os.remove(sock_path) except OSError as e: if e.errno != 2: # 2表示no such file or direrctory raise e self._socket.bind(genearte_sock_path()) self._socket.listen(50)
def __init__(self, listen_add, callback, max_client = 1000, reuse_add = True, timeout = 15, autoreload = False): self._socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self._socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, reuse_add) set_close_exec(self._socket.fileno()) self._socket.bind(listen_add) self._socket.listen(max_client) self._callback = callback self.timeout = timeout self.autoreload = autoreload
def serve_forever(self, in_sub = False): if in_sub: # 只在子进程中才忽略掉中断信号 signal.signal(signal.SIGINT, signal.SIG_IGN) if self.autoreload: self.__autoreload() while True: s, addr = self._socket.accept() try: set_close_exec(s.fileno()) s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) s.settimeout(self.timeout) # 设置客户端的超时时间 connection = HTTPConnection(s) gevent.spawn(connection.get_request, self._callback).link_exception(connection.gevent_exception) # 当成功生成一个request时,就会把request传入callback中去,一般是Application except Exception as e: s.close()