Как сделать тихий / тихий HTTPServer и вывод stderr BasicHTTPRequestHandler? - PullRequest
52 голосов
/ 02 августа 2010

Я пишу простой 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, но не смог найти подсказку. Я уверен, что должен быть способ. Если вы это сделаете, пожалуйста, поделитесь со мной и другими; Я ценю ваши усилия.

1 Ответ

107 голосов
/ 02 августа 2010

Это, вероятно, сделает это:

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