如何在Python Web服务器中禁用反向DNS查找?

6 投票
1 回答
3321 浏览
提问于 2025-04-16 21:55

我有一个简单的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文档CGIHTTPRequestHandlerBaseHTTPRequestHandler是兼容的接口,而BaseHTTPRequestHandler有一个方法叫address_string()

class MyHandler(CGIHTTPServer.CGIHTTPRequestHandler):

    # Disable logging DNS lookups
    def address_string(self):
        return str(self.client_address[0])

handler = MyHandler

撰写回答