Beispiel #1
0
    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
Beispiel #2
0
    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)
Beispiel #3
0
 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)
Beispiel #4
0
    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
Beispiel #5
0
    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()