之前为了司内的一个小服务需求,使用Python3启动了一个简单的HttpServer: python3 -m http.server 8000 &
。可是过一段时间发现这个服务连接不了了。netstat
查看有非常多 connections 存在。所以改写了内置的 SimpleHttpServer, 对每个HttpRequest 实现自动超时,目前看上去Bug fix。
python3 server.py 2> stderr.log &
import http.server
import socketserver
PORT = 8000
class MySimpleHTTPRequestHandler(http.server.SimpleHTTPRequestHandler):
def handle(self):
self.request.settimeout(1)
super().handle()
Handler = MySimpleHTTPRequestHandler
with socketserver.TCPServer(("", PORT), Handler) as httpd:
print("serving at port", PORT)
httpd.timeout = 1
httpd.serve_forever()