skip to navigation
skip to content

Not Logged In

simplehttpd 0.1.0

An extendable replacement for http.server and its SimpleHTTPRequestHandler

simplehttpd
============

An extendable replacement for http.server and its SimpleHTTPRequestHandler

simplehttpd was written as a quick hack to extend SimpleHTTPRequestHandler in http.server to be more, well, extendable.
My specific need was to be able to quickly run an http server from the command line that also sent a custom header to the client
that forbade caching of the content served, in order to quickly iterate in my web development project, being sure that the content
truly was the latest content. The opportunity arose to make it more generally extendable, as you'll see from usage below.

Usage
=====
Once you install with
        python setup.py install
or put simplehttpd wherever you need it, it mirrors the usage of http.server almost exactly.

The default port is 8000, but you can also set your own port.
        python -m simplehttpd 8080
An alternative that allows more customization is:
        python -c "import simplehttpd; simplehttpd.run(port=8080)"

But what if you want to send a custom header, like 'Cache-Control: no-cache' with every page load?
Well, simplehttpd.handler has an object called custom_headers which (by default) is an OrderedDict. So let's do this:
        python -c "import simplehttpd; simplehttpd.handler.custom_headers['Cache-Control'] = 'no-cache'; simplehttpd.run()"

And for the really deep extending, you have even more options.
The custom header could be a callable that disallows caching files, but allows caching of directory lists.
        def no_file_caching(response, file=None):
                if file is not None:
                        self.send_header("Cache-Control", 'no-cache')
Which will be called at send time.

If you're really crazy, you could even replace methods on the handler class like send_custom_headers, which dispatches each custom header
Or replace the custom_headers OrderedDict on the handler class with your own kind of dict. It's just python, so let's hack!
 
  • Downloads (All Versions):
  • 0 downloads in the last day
  • 0 downloads in the last week
  • 0 downloads in the last month