2010-08-02 10 views
38

Ich schreibe einen einfachen http-Server als Teil meines Projekts. Unten ist ein Skelett mein Skript:Wie zu stumm/still HTTPServer und BasicHTTPRequestHandler Stderr Ausgabe?

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

Meine Frage: Wie kann ich die stderr Logausgabe mein Skript jedes Mal unterdrücken ein Client eine Verbindung zu meinem Server erzeugt?

Ich habe die HTTPServer-Klasse bis zu ihrer übergeordneten betrachtet, konnte jedoch keine Flag oder Funktionsaufruf finden, um dies zu erreichen. Ich schaute auch auf die BaseHTTPRequestHandler-Klasse, konnte aber keinen Hinweis finden. Ich bin mir sicher, dass es einen Weg geben muss. Wenn du es tust, teile es bitte mit mir und anderen; Ich schätze Ihre Bemühungen.

Antwort

84

Dies wird wahrscheinlich tun es:

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: Ihre Lösung funktioniert perfekt. Vielen Dank. –

+0

Das hat mir solche Kopfschmerzen bereitet, weil mein httpserver nichts zurückgab, wenn ich ihn ohne Hintergrund im Hintergrund laufen ließ. Du bist ein Lebensretter. Vielen Dank! – agressen