【问题标题】:How to disable reverse dns lookup in python webserver?如何在 python 网络服务器中禁用反向 dns 查找?
【发布时间】:2011-10-09 08:19:19
【问题描述】:

我有一个简单的 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 文档中没有找到答案。

【问题讨论】:

    标签: python networking dns


    【解决方案1】:

    您可以子类化您自己的处理程序类,它不会进行 DNS 查找。这来自http://docs.python.org/library/cgihttpserver.html#module-CGIHTTPServer,它说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
    

    【讨论】:

    • 整洁。有时我发现只使用“python -m SimpleHTTPServer”快速启动 HTTP 服务器很有用。这是一个做同样事情但使用上述技巧禁用反向 DNS 查找的单线器。 python -c "import SimpleHTTPServer; SimpleHTTPServer.SimpleHTTPRequestHandler.address_string = lambda self: str(self.client_address[0]); SimpleHTTPServer.test()"
    猜你喜欢
    • 2020-05-11
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 2021-07-08
    • 2012-08-07
    • 2012-08-12
    • 2022-01-05
    • 2011-05-26
    相关资源
    最近更新 更多