I have the following simple Threaded fileserver to be used by my application:
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()
How can I prevent SimpleHTTPServer to output "GET 'http:// BLA BLA BLA" at every request? Thanks
CTRL+C is pressed to stop the server.
Apache Tomcat, NGINX, JBoss, Jetty, and XAMPP are the most popular alternatives and competitors to Apache HTTP Server.
You can subclass SimpleHTTPServer.SimpleHTTPRequestHandler
and override the log_message
method. Here is the method you will be overriding, 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))
So to simply ignore all messages, replace the body of the function with pass
. For more fine-grained control (i.e if you still want error messages printed), you may instead override the log_request
and/or log_error
methods. Original methods are like this:
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)
From 2.7 to 3.1 the module names change, but these methods are unchanged.
Run it this way in Bash:
python -m SimpleHTTPServer &>/dev/null
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With