Mercurial > moin > 1.9
changeset 4034:8ced48dc0a3d
added test.wsgi script
author | Thomas Waldmann <tw AT waldmann-edv DOT de> |
---|---|
date | Sun, 24 Aug 2008 20:51:37 +0200 |
parents | 404220520c63 |
children | fbf92e24f4d2 |
files | wiki/server/test.wsgi |
diffstat | 1 files changed, 86 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/wiki/server/test.wsgi Sun Aug 24 20:51:37 2008 +0200 @@ -0,0 +1,86 @@ +#!/usr/bin/env python +""" +A simple WSGI test application. + +Its main purpose is to show that WSGI support works (meaning that the +web server and the WSGI adaptor / support module are configured correctly). + +As a nice plus, it outputs some interesting system / WSGI values as a nice +HTML table. + +The main use of this script will be using the WSGI "application" defined +below within your production WSGI environment. You will use some code similar +to what you see at the end of this script to use the application from that +environment. For the special case of apache2/mod_wsgi, it shoud be possible +to directly use this file. + +If you start this script from the commandline either with python2.5 or with +and older python + wsgiref module installed, it will serve the content on +http://localhost:8000/ - this is mainly for debugging THIS script. + +@copyright: 2008 by MoinMoin:ThomasWaldmann +@license: GPL v2 or later, see COPYING for details. +""" +import os.path +import os +import sys + +try: + __file__ +except NameError: + __file__ = '?' + +html_template = """\ +<html> +<head> + <title>WSGI Test Script working!</title> +</head> +<body> + <table border=1> + <tr><th colspan=2>1. System Information</th></tr> + <tr><td>Python</td><td>%(python_version)s</td></tr> + <tr><td>Platform</td><td>%(platform)s</td></tr> + <tr><td>Absolute path of this script</td><td>%(abs_path)s</td></tr> + <tr><td>Filename</td><td>%(filename)s</td></tr> + <tr><th colspan=2>2. WSGI Environment</th></tr> +%(wsgi_env)s + </table> +</body> +</html> +""" + +row_template = " <tr><td>%s</td><td>%r</td></tr>" + + +def application(environ, start_response): + """ The WSGI test application """ + # emit status / headers + status = "200 OK" + headers = [('Content-Type', 'text/html'), ] + start_response(status, headers) + + # assemble and return content + content = html_template % { + 'python_version': sys.version, + 'platform': sys.platform, + 'abs_path': os.path.abspath('.'), + 'filename': __file__, + 'python path': repr(sys.path), + 'wsgi_env': '\n'.join([row_template % item for item in environ.items()]), + } + return [content] + + +if __name__ == '__main__': + # this runs when script is started directly from commandline + try: + # create a simple WSGI server and run the application + from wsgiref import simple_server + httpd = simple_server.WSGIServer(('', 8000), simple_server.WSGIRequestHandler) + httpd.set_app(application) + httpd.serve_forever() + except ImportError: + # wsgiref not installed, just output html to stdout + for content in application({}, lambda status, headers: None): + print content +