如何在python webserver中禁用反向dns查找?

ale*_*lex 6 python dns networking

我有一个简单的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()
Run Code Online (Sandbox Code Playgroud)

服务器对每个请求进行反向dns查找,以便在屏幕上显示日志记录.由于我在本地网络设置中运行服务器,因此没有可用的DNS服务器.所以每次反向dns查找都会导致查找超时,从而延迟服务器的响应.我怎样才能禁用DNS查找?我没有在python文档中找到答案.

Dou*_*der 12

您可以子类化自己的处理程序类,它不会执行DNS查找.这遵循http://docs.python.org/library/cgihttpserver.html#module-CGIHTTPServer它说CGIHTTPRequestHandler是接口兼容BaseHTTPRequestHandlerBaseHTTPRequestHandler有一个方法address_string() .

class MyHandler(CGIHTTPServer.CGIHTTPRequestHandler):

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

handler = MyHandler
Run Code Online (Sandbox Code Playgroud)

  • 整齐.我有时发现使用"python -m SimpleHTTPServer"快速启动HTTP服务器很有用.这是一个单线程,它做同样的事情,但使用上面的提示来禁用反向DNS查找.python -c"import SimpleHTTPServer; SimpleHTTPServer.SimpleHTTPRequestHandler.address_string = lambda self:str(self.client_address [0]); SimpleHTTPServer.test()" (5认同)