如何在 python 网络服务器中禁用反向 dns 查找?
Posted
技术标签:
【中文标题】如何在 python 网络服务器中禁用反向 dns 查找?【英文标题】:How to disable reverse dns lookup in python webserver? 【发布时间】: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 文档中没有找到答案。
【问题讨论】:
【参考方案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()"以上是关于如何在 python 网络服务器中禁用反向 dns 查找?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 autograd 反向传播中禁用某些模块的梯度更新?