2012-05-18 1 views
11

Я следующий простой Каскадный файловый сервер для использования моего приложения:Как отключить 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»при каждом запросе? Благодаря

+0

Тип дубликата: http://stackoverflow.com/q/3389305/267781 – MattH

ответ

25

Вы можете создать подкласс SimpleHTTPServer.SimpleHTTPRequestHandler и переопределить метод log_message. Вот метод вы будете переопределение, рубленый строка документации:

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_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 имена модулей изменяются, но эти методы не изменяются.

11

Выполнить это так в Баш:

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

Удивительно, теперь у меня это в моем '~/.profile':' alias server = "(python -m SimpleHTTPServer>/dev/null 2> & 1 &) && echo 'Сервер работает на 0.0.0.0:80' && open http://0.0.0.0:8000 "' – Stephen