= Development Server = Diva comes with a couple of simple shortcuts for running your application using the `WSGIServer` from the Python standalone library. Assuming you have an `Application` subclass (see ApplicationObject), for example: {{{ #!pycon >>> from diva.core import Application >>> class MyApp(Application): ... pass }}} You can then run that application using the development server as follows, directly from the Python shell: {{{ #!pycon >>> import logging >>> from diva.server import serve >>> serve(MyApp(), log_level=logging.DEBUG) [INFO] diva.server: Serving <__main__.MyApp object at 0x10f63f0> on 127.0.0.1:8080 }}} == Command-Line Interface == It's also simple to enable your application to be run from the command-line, as shown in the following script: {{{ #!python import os from diva.core import Application from diva.server import main class MyApp(Application): pass if __name__ == '__main__': main(app) }}} Now running that script will automatically launch a simple command-line interface complete with options: {{{ $ python myapp.py --help Usage: myapp.py [options] Options: -h, --help show this help message and exit -O name=value set a configuration option -b HOST, --host=HOST hostname or IP address to bind to (default 127.0.0.1) -p PORT, --port=PORT port number to listen to (default 8080) -r, --auto-reload automatically restart after code changes (default off) -v, --verbose print as much as possible -q, --quiet print as little as possible }}} You can use the `-O` option to set one or more configuration options, overriding any defaults set by the application. For example: {{{ $ python myapp.py -Odebug=false -Ocsrf_protection=false }}} See ConfigOptions for a list of options made available by the framework, in addition to any custom options your application may support. == Logging == The development server automatically sets up logging for you, with log messages being written to `stderr` (so they should just show up on the console where you started the server). The verbosity level of the log messages can be controlled with the command-line options `--verbose`/`-v` (for debug-level logging) and `--quiet`/`-q` (for error-level logging). The default is info-level logging. If `simplejson` is installed, the development server also automatically enables [wiki:FirePHP] support for directing request-related log messages to the [http://www.getfirebug.com/ Firebug console] in the browser. == Automatic Reloading == When the command-line interface is used, automatic restarting of the server can be enabled using the `--auto-reload` (or `-r`) option. This will cause the framework to look for changes to any loaded Python modules, as well as a couple of other files such as [UrlRouting routing configuration files] and [wiki:I18nAndL10n translation catalogs]. Whenever a change is detected the complete server process is restarted. Note that this will sometimes cause a short delay until the server is available again. Applications can add their own files to the list of watched files using the `watch_file()` function. == API Documentation == [[PythonDoc(trunk, diva.server)]]