diff options
Diffstat (limited to 'examples/wsgi/run_wsgi.py')
-rw-r--r-- | examples/wsgi/run_wsgi.py | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/examples/wsgi/run_wsgi.py b/examples/wsgi/run_wsgi.py new file mode 100644 index 0000000..029e240 --- /dev/null +++ b/examples/wsgi/run_wsgi.py @@ -0,0 +1,31 @@ +from wsgiutils import wsgiServer +import cgi, sys +from mako.lookup import TemplateLookup +from mako import exceptions + +lookup = TemplateLookup(directories=['./'], filesystem_checks=True) + +def serve(environ, start_response): + fieldstorage = cgi.FieldStorage( + fp = environ['wsgi.input'], + environ = environ, + keep_blank_values = True + ) + d = dict([(k, f[k]) for k in fieldstorage]) + uri = environ.get('PATH_INFO', '/') + + try: + template = lookup.get_template(uri) + start_response("200 OK", [('Content-type','text/html')]) + return [template.render(**d)] + except exceptions.TemplateLookupException: + start_response("404 Not Found", []) + return ["Cant find template '%s'" % uri] + except Exception, e: + start_response("200 OK", [('Content-type','text/html')]) + error_template = exceptions.html_error_template(lookup) + return [error_template.render(error=e)] + +server = wsgiServer.WSGIServer (('localhost', 8000), {'/': serve}) +print "Server listening on port 8000" +server.serve_forever() |