summaryrefslogtreecommitdiff
path: root/pypers/pycon07/error_trapper.py
blob: 172b67996c9ced25c2ef2fc3293d1b700a87c6dd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import sys
from wsgiref.simple_server import make_server

# WSGI app
def simple_app(env, resp):
    resp('200 OK', [('Content-type','text/plain')])
    yield 'Hello world!\n'
    yield 1/0

def wrapped_app(app, env, resp):
    try:
        page = app(env, lambda s, h, e=None: None)
        print list(page)
    except:
        resp('500 ERR',  [("content-type","text/plain")], sys.exc_info())
        return ['err']
    else:
        resp('200 OK',  [("content-type","text/html")])
        return page

if __name__ == '__main__':
    make_server('', 8000, wrapped_app.__get__(simple_app)).serve_forever()