设置一个监听文件套接字的 HTTP 服务器

use*_*380 5 python httpserver

我如何使用HTTPServer(或其他一些类)来设置一个侦听文件系统套接字而不是实际网络套接字的 HTTP 服务器?我所说的“文件系统套接字”是指该AF_UNIX类型的套接字。

Dol*_*000 4

HTTPServer继承自SocketServer.TCPServer,所以我认为公平地说它不适用于该用例,即使您尝试解决它,也可能会遇到问题,因为您有点“滥用”它。

然而,话虽如此,定义一个子类本身是可以HTTPServer非常简单地创建和绑定 Unix 套接字的,如下所示:

class UnixHTTPServer(HTTPServer):
    address_family = socket.AF_UNIX

    def server_bind(self):
        SocketServer.TCPServer.server_bind(self)
        self.server_name = "foo"
        self.server_port = 0
Run Code Online (Sandbox Code Playgroud)

然后,只需将要通过参数绑定到的路径传递server_address给构造函数:

server = UnixHTTPServer("/tmp/http.socket", ...)
Run Code Online (Sandbox Code Playgroud)

不过,我不能保证它实际上会很好地工作。您可能必须实现自己的 HTTP 服务器。