【问题标题】:How to silent/quiet HTTPServer and BasicHTTPRequestHandler's stderr output?如何使 HTTP Server 和 BasicHTTP RequestHandler stderr 输出静默/静默?
【发布时间】:2010-08-02 15:39:28
【问题描述】:

我正在编写一个简单的 http 服务器作为我项目的一部分。下面是我的脚本框架:

from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler

class MyHanlder(BaseHTTPRequestHandler):
    def do_GET(self):
        self.send_response(200)
        self.send_header('Content-type', 'text/html')
        self.end_headers()
        self.wfile.write('<html><body><p>OK</p></body></html>')

httpd = HTTPServer(('', 8001), MyHanlder)
httpd.serve_forever()

我的问题:我如何抑制每次客户端连接到我的服务器时脚本产生的 stderr 日志输出?

我已经查看了 HTTPServer 类直至其父类,但找不到任何标志或函数调用来实现这一点。我还查看了 BaseHTTPRequestHandler 类,但找不到线索。我相信一定有办法。如果你这样做,请与我和其他人分享;感谢您的努力。

【问题讨论】:

    标签: python httpserver basehttpserver


    【解决方案1】:

    这可能会做到:

    from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler
    
    class MyHandler(BaseHTTPRequestHandler):
        def do_GET(self):
            self.send_response(200)
            self.send_header('Content-type', 'text/html')
            self.end_headers()
            self.wfile.write('<html><body><p>OK</p></body></html>')
        def log_message(self, format, *args):
            return
    
    httpd = HTTPServer(('', 8001), MyHandler)
    httpd.serve_forever()
    

    【讨论】:

    • 这让我非常头疼,因为当我在没有 tty 的情况下在后台运行它时,我的 httpserver 没有返回任何内容。你是救生员。谢谢!
    • @agressen,同样的挫败感——感谢 MattH。我的应用被实现为.pyw,因为它是一个 Tkinter 接口,所以没有控制台窗口会阻止发送任何回复。
    • 您可能想要覆盖log_request 而不是log_message,因为后者用于其他类型的日志记录,包括错误。
    • 感谢您的提示,让我找到了这个official doc
    猜你喜欢
    • 2011-01-26
    • 2022-11-11
    • 2011-04-15
    • 1970-01-01
    • 1970-01-01
    • 2018-10-19
    • 1970-01-01
    • 2021-02-15
    • 1970-01-01
    相关资源
    最近更新 更多