man*_*lvf 5 python sockets networking webserver wsgi
我正在调试基于 wsgiref.simple 服务器的自定义 WSGI 服务器中的泄漏,我们发现我们没有正确关闭连接,因此套接字进入 CLOSE_WAIT 状态。我们正在使用线程池。
这是处理请求的python库代码:
def handle(self):
"""Handle a single HTTP request"""
self.raw_requestline = self.rfile.readline(65537)
if len(self.raw_requestline) > 65536:
self.requestline = ''
self.request_version = ''
self.command = ''
self.send_error(414)
return
if not self.parse_request(): # An error code has been sent, just exit
return
handler = ServerHandler(
self.rfile, self.wfile, self.get_stderr(), self.get_environ()
)
handler.request_handler = self # backpointer for logging
handler.run(self.server.get_app())
Run Code Online (Sandbox Code Playgroud)
如果 self.raw_requestline 的长度为 0,覆盖此方法并关闭套接字是否正确?(确定 TCP 套接字的状态)