Как отключить SimpleHTTPServer?

У меня есть следующий простой файловый сервер Threaded, который будет использоваться моим приложением:

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 "при каждом запросе? Благодаря

Ответ 1

Вы можете подклассифицировать SimpleHTTPServer.SimpleHTTPRequestHandler и переопределить метод log_message. Вот метод, который вы будете переопределять, sans 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. Для более мелкомасштабного управления (т.е. Если вы все еще хотите напечатать сообщения об ошибках), вы можете вместо этого переопределить методы 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 имена модулей изменяются, но эти методы не изменяются.

Ответ 2

Запустите его таким образом в bash:

python -m SimpleHTTPServer > /dev/null 2>&1