2010-08-02 13 views
38

J'écris un simple serveur http dans le cadre de mon projet. Ci-dessous un squelette de mon script:Comment silencieux/silencieux HTTPServer et la sortie stderr de 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() 

Ma question: comment puis-je supprimer la sortie du journal stderr mon script produit chaque fois qu'un client se connecte à mon serveur?

J'ai regardé la classe HTTPServer jusqu'à son parent, mais je n'ai trouvé aucun appel de flag ou de fonction pour y parvenir. J'ai également regardé la classe BaseHTTPRequestHandler, mais je n'ai pas trouvé d'indice. Je suis sûr qu'il doit y avoir un moyen. Si vous le faites, s'il vous plaît partager avec moi et d'autres; J'apprécie ton effort.

Répondre

84

Ce sera probablement le faire:

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: Votre solution fonctionne parfaitement. Je vous remercie. –

+0

Cela m'a donné un tel mal de tête parce que mon httpserver ne retournait rien quand je l'ai exécuté en arrière-plan sans un tty. Tu es un sauveur. Merci! – agressen