2010-08-02 13 views
38

Estoy escribiendo un servidor HTTP simple como parte de mi proyecto. A continuación se muestra un esqueleto de mi guión:¿Cómo silenciar/silenciar la salida de stderr de HTTPServer y BasicHTTPRequestHandler?

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

Mi pregunta: ¿cómo suprimir la salida del registro stderr mi guión produce cada vez que un cliente se conecta al servidor?

He visto la clase HTTPServer hasta su principal, pero no he podido encontrar ninguna marca o llamada de función para lograr esto. También miré la clase BaseHTTPRequestHandler, pero no pude encontrar una pista. Estoy seguro de que debe haber una manera. Si lo hace, por favor comparta conmigo y otros; Le agradezco su esfuerzo.

Respuesta

84

Esto probablemente hacerlo:

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: Su solución funciona perfectamente. Gracias. –

+0

Esto me dio tanto dolor de cabeza porque mi httpserver no devolvía nada cuando lo ejecuté en segundo plano sin un tty. Eres un salvavidas. ¡Gracias! – agressen

Cuestiones relacionadas