2010-08-02 31 views
38

我正在写一个简单的http服务器作为我的项目的一部分。以下是我的脚本的骨架:如何静默/静默HTTPServer和BasicHTTPRequestHandler的stderr输出?

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类,但是找不到线索。我相信肯定有办法。如果你这样做,请与我和其他人分享;我感谢你的努力。

回答

84

这可能会做到这一点:

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() 
+0

MattH:您的解决方案完美的作品。谢谢。 – 2010-08-02 16:36:54

+0

这让我头疼,因为我的httpserver在没有tty的情况下在后台运行时没有返回任何东西。你是一个拯救生命的人。谢谢! – agressen 2015-04-29 07:41:31