--- a/qmsk/web/async.py Thu Jan 29 22:16:16 2015 +0200
+++ b/qmsk/web/async.py Thu Jan 29 23:11:44 2015 +0200
@@ -1,6 +1,7 @@
import asyncio
import qmsk.web.application
import werkzeug
+import werkzeug.exceptions
class Handler (qmsk.web.application.Handler) :
@asyncio.coroutine
@@ -26,15 +27,21 @@
@asyncio.coroutine
def __call__ (self, environ, start_response):
request = werkzeug.Request(environ)
-
- handler, params = self.lookup(request)
+
+ handler = None
try:
+ handler, params = self.lookup(request)
+
handler.init()
response = yield from handler.respond_async(**params)
+
+ except werkzeug.exceptions.HTTPException as error :
+ response = error
finally:
- handler.cleanup()
+ if handler:
+ handler.cleanup()
return response(environ, start_response)