Как успокоить SimpleHTTPServer?
У меня есть следующий простой потоковый файловый сервер, который будет использоваться моим приложением:
class FileServer(Thread):
"""Simple file server exposing the current directory for the thumbnail
creator
"""
def __init__(self, port):
Thread.__init__(self)
self.port = port
Handler = SimpleHTTPServer.SimpleHTTPRequestHandler
self.httpd = SocketServer.TCPServer(("", port), Handler)
def run(self):
self.httpd.serve_forever()
def stop(self):
self.httpd.shutdown()
Как я могу запретить SimpleHTTPServer выводить " GET 'http: / / BLA BLA BLA" по каждому запросу? Спасибо
2 ответов
вы можете подкласс SimpleHTTPServer.SimpleHTTPRequestHandler
и переопределить log_message
метод. Вот метод, который вы будете переопределять, без docstring:
def log_message(self, format, *args):
sys.stderr.write("%s - - [%s] %s\n" %
(self.address_string(),
self.log_date_time_string(),
format%args))
поэтому, чтобы просто игнорировать все сообщения, замените тело функции на pass
. Для более тонкого контроля (i.e если вы все еще хотите напечатать сообщения об ошибках), вы можете вместо этого переопределить log_request
и/или log_error
методы. Оригинальные методы таковы:
def log_request(self, code='-', size='-'):
self.log_message('"%s" %s %s',
self.requestline, str(code), str(size))
def log_error(self, format, *args):
self.log_message(format, *args)
от 2.7 до 3.1 имена модулей меняются, но эти методы не изменились.