From: Fredrik Tolf Date: Sun, 5 Feb 2012 16:00:30 +0000 (+0100) Subject: Merge branch 'master' into python3 X-Git-Url: http://dolda2000.com/gitweb/?p=wrw.git;a=commitdiff_plain;h=3614ca8353a5f2055fdcc086e6bc9dc993b49b42 Merge branch 'master' into python3 Conflicts: wrw/resp.py wrw/session.py --- 3614ca8353a5f2055fdcc086e6bc9dc993b49b42 diff --cc wrw/dispatch.py index 709cfe4,15ea99e..e51559e --- a/wrw/dispatch.py +++ b/wrw/dispatch.py @@@ -1,3 -1,6 +1,6 @@@ + import sys, traceback -import env ++from . import env + __all__ = ["restart"] class restart(Exception): @@@ -39,15 -42,33 +42,33 @@@ class iterproxy(object) if hasattr(self.bk, "close"): self.bk.close() + def defaulterror(req, excinfo): - import resp ++ from . import resp + traceback.print_exception(*excinfo) + raise resp.httperror(500) + + def wraphandler(handler, excinfo): + def wrapped(req): + return handler(req, excinfo) + return wrapped + + errorhandler = env.var(defaulterror) + def handle(req, startreq, handler): + eh = errorhandler.val try: resp = [""] while True: try: resp = iterproxy(handler(req)) break - except restart, i: + except restart as i: handler = i.handle - except Exception, i: ++ except Exception as i: + if eh is None: + raise + handler = wraphandler(eh, sys.exc_info()) + eh = None req.commit(startreq) return resp finally: diff --cc wrw/resp.py index 75a7f3a,3514616..6e95ec5 --- a/wrw/resp.py +++ b/wrw/resp.py @@@ -1,4 -1,4 +1,4 @@@ - from . import dispatch, proto -import dispatch, proto, env ++from . import dispatch, proto, env __all__ = ["skeleton", "skelfor", "setskel", "usererror"] diff --cc wrw/session.py index d78c43b,1239ecd..832387e --- a/wrw/session.py +++ b/wrw/session.py @@@ -1,5 -1,5 +1,5 @@@ import threading, time, pickle, random, os - from . import cookie -import cookie, env ++from . import cookie, env __all__ = ["db", "get"]