如何在Python Web服务器中禁用反向DNS查找?
我有一个简单的Python CGI服务器:
import BaseHTTPServer
import CGIHTTPServer
import cgitb; cgitb.enable() ## This line enables CGI error reporting
server = BaseHTTPServer.HTTPServer
handler = CGIHTTPServer.CGIHTTPRequestHandler
server_address = ("", 8000)
httpd = server(server_address, handler)
httpd.serve_forever()
这个服务器在每次请求时都会进行反向DNS查询,以便在屏幕上记录日志。因为我是在本地网络环境中运行这个服务器,所以没有DNS服务器可用。因此,每次反向DNS查询都会导致超时,拖慢服务器的响应速度。我该如何禁用这个DNS查询呢?我在Python的文档中没有找到答案。
1 个回答
12
你可以创建一个自己的处理类,这样就不会进行DNS查询了。这是因为根据Python文档,CGIHTTPRequestHandler和BaseHTTPRequestHandler是兼容的接口,而BaseHTTPRequestHandler有一个方法叫address_string()。
class MyHandler(CGIHTTPServer.CGIHTTPRequestHandler):
# Disable logging DNS lookups
def address_string(self):
return str(self.client_address[0])
handler = MyHandler