Basic server classes and router.

The following example creates a server that serves static files from the files subdirectory of the current directory and causes it to run on port 8080 until it is killed:

from wptserve import server, handlers

httpd = server.WebTestHttpd(port=8080, doc_root="./files/",
                            routes=[("GET", "*", handlers.file_handler)])


class wptserve.server.BaseWebTestRequestHandler(*args, **kwargs)

RequestHandler for WebTestHttpd

class wptserve.server.H2ConnectionGuard(obj)

H2Connection objects are not threadsafe, so this keeps thread safety

class wptserve.server.H2Headers(headers)
class wptserve.server.WebTestHttpd(host='', port=8000, server_cls=None, handler_cls=<class wptserve.server.Http1WebTestRequestHandler>, use_ssl=False, key_file=None, certificate=None, encrypt_after_connect=False, router_cls=<class 'wptserve.router.Router'>, doc_root='.', routes=None, rewriter_cls=<class 'wptserve.server.RequestRewriter'>, bind_address=True, rewrites=None, latency=None, config=None, http2=False)
  • host – Host from which to serve (default:
  • port – Port from which to serve (default: 8000)
  • server_cls – Class to use for the server (default depends on ssl vs non-ssl)
  • handler_cls – Class to use for the RequestHandler
  • use_ssl – Use a SSL server if no explicit server_cls is supplied
  • key_file – Path to key file to use if ssl is enabled
  • certificate – Path to certificate file to use if ssl is enabled
  • encrypt_after_connect – For each connection, don’t start encryption until a CONNECT message has been received. This enables the server to act as a self-proxy.
  • router_cls – Router class to use when matching URLs to handlers
  • doc_root – Document root for serving files
  • routes – List of routes with which to initialize the router
  • rewriter_cls – Class to use for request rewriter
  • rewrites – List of rewrites with which to initialize the rewriter_cls
  • config – Dictionary holding environment configuration settings for handlers to read, or None to use the default values.
  • bind_address – Boolean indicating whether to bind server to IP address.
  • latency – Delay in ms to wait before serving each response, or callable that returns a delay in ms

HTTP server designed for testing scenarios.

Takes a router class which provides one method get_handler which takes a Request and returns a handler function.


The host name or ip address of the server


The port on which the server is running


The Router object used to associate requests with resources for this server


The Rewriter object used for URL rewriting


Boolean indicating whether the server is using ssl


Boolean indicating whether the server is running


Start the server.

Parameters:block – True to run the server on the current thread, blocking, False to run on a separate thread.

Stops the server.

If the server is not running, this method has no effect.