yield-based example Revision 376330313937 (Sat Jan 08 2011 at 18:51) - Diff Link to this snippet: https://friendpaste.com/4lFbZsTpPGA9N9niyOt9PF Embed: manni perldoc borland colorful default murphy trac fruity autumn bw emacs pastie friendly Show line numbers Wrap lines 1234567891011121314151617181920212223242526272829def my_awesome_application(environ): # do stuff yield b'200 OK', [], ["Hello, World!"]def my_middelware(app): def wrapper(environ): # maybe edit environ try: status, headers, body = yield app(environ) # maybe edit response: # body = (piglatin(data) for data in body) return status, headers, body except: # maybe handle error finally: # maybe release resourcesdef my_server(app, httpreq): environ = wsgi.make_environ(httpreq) def process_response(result): status, headers, body = result write_headers(httpreq, status, headers) Coroutine(body, body_trampoline, finish_response) def finish_response(result): # cleanup, if any Coroutine(app(environ), app_trampoline, process_response)