簡體   English   中英

如何讓 SimpleHTTPServer 安靜?

[英]How to quiet 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”? 謝謝

您可以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_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,模塊名稱發生了變化,但這些方法沒有改變。

在 Bash 中以這種方式運行:

python -m SimpleHTTPServer &>/dev/null

沒有必要子類化。

更簡單的解決方案:

http_handler = SimpleHTTPServer.SimpleHTTPRequestHandler
http_handler.log_message = lambda a, b, c, d, e: None

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM