=========================
Serving WSGI Applications
=========================

There are many ways to serve a WSGI application. While you're developing it
you usually don't want a full blown webserver like Apache but a simple
standalone one. With Python 2.5 onwards there is the `wsgiref`_ server in
the standard library. If you're using older versions of Python you can
download the package from the cheeseshop.

However there are some caveats. Sourcecode won't reload itself when changed
and each time you kill the server using ``^C`` you get an `KeyboardInterrupt`
error. While the latter is easy to solve the first one can be a pain in the
ass in some situations.

Because of that Werkzeug ships a small wrapper over `wsgiref` that spawns
the WSGI application in a subprocess and automatically reloads the application
if a module was changed.

The easiest way is creating a small ``start-myproject.py`` that runs the
application:

.. sourcecode:: python

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    from myproject import make_app
    from werkzeug.serving import run_simple

    run_simple('localhost', 8080, app, use_reloader=True)

You can also pass it a `extra_files` keyword argument with a list of
additional files (like configuration files) you want to observe.


.. _wsgiref: http://cheeseshop.python.org/pypi/wsgiref
