--- Revision 386562363634 +++ Revision 376330313937 @@ -1,12 +1,12 @@ def my_awesome_application(environ): # do stuff - return b'200 OK', [], ["Hello, World!"] + yield b'200 OK', [], ["Hello, World!"] def my_middelware(app): def wrapper(environ): # maybe edit environ try: - status, headers, body = app(environ) + status, headers, body = yield app(environ) # maybe edit response: # body = (piglatin(data) for data in body) return status, headers, body @@ -17,10 +17,13 @@ def my_server(app, httpreq): environ = wsgi.make_environ(httpreq) - try: - status, headers, body = app(environ) + + def process_response(result): + status, headers, body = result write_headers(httpreq, status, headers) - for data in body: - write_data(httpreq, data) - except: - respond_with_500() + Coroutine(body, body_trampoline, finish_response) + + def finish_response(result): + # cleanup, if any + + Coroutine(app(environ), app_trampoline, process_response)