request.exception is cleared by the exception view which happens before the finished callbacks. I think you could probably consider this behavior a bug. I've opened https://github.com/Pylons/pyramid/issues/1223 for you.
On Thu, Jan 16, 2014 at 6:27 AM, wilk <[email protected]> wrote: > Hi, > > I don't understand why request.exception is None when i raise an > exception : > I would like to test using add_request_method to manage a postgresql > connection with commit/rollback in finished_callback but i think i miss > something... > > from wsgiref.simple_server import make_server > from pyramid.config import Configurator > from pyramid.response import Response > > > def end(request): > print "END" > print "request.exception=%s" % request.exception > > def start(request): > print "START" > request.add_finished_callback(end) > return "x" > > def index(request): > request.x > 0/0 > return Response("Hello") > > if __name__ == '__main__': > config = Configurator() > config.add_request_method(start, "x", property=True, reify=True) > config.add_route('index', '/') > config.add_view(index, route_name='index') > app = config.make_wsgi_app() > server = make_server('0.0.0.0', 8080, app) > server.serve_forever() > > > START > END > request.exception=None > Traceback (most recent call last): > File "/usr/lib/python2.7/wsgiref/handlers.py", line 85, in run > self.result = application(self.environ, self.start_response) > File > "/home/wilk/.virtualenvs/pyram/local/lib/python2.7/site-packages/pyramid/router.py", > line 272, in __call__ > response = self.invoke_subrequest(request, use_tweens=True) > File > "/home/wilk/.virtualenvs/pyram/local/lib/python2.7/site-packages/pyramid/router.py", > line 247, in invoke_subrequest > response = handle_request(request) > File > "/home/wilk/.virtualenvs/pyram/local/lib/python2.7/site-packages/pyramid/tweens.py", > line 21, in excview_tween > response = handler(request) > File > "/home/wilk/.virtualenvs/pyram/local/lib/python2.7/site-packages/pyramid/router.py", > line 163, in handle_request > response = view_callable(context, request) > File > "/home/wilk/.virtualenvs/pyram/local/lib/python2.7/site-packages/pyramid/config/views.py", > line 385, in viewresult_to_response > result = view(context, request) > File > "/home/wilk/.virtualenvs/pyram/local/lib/python2.7/site-packages/pyramid/config/views.py", > line 501, in _requestonly_view > response = view(request) > File "small.py", line 19, in index > 0/0 > ZeroDivisionError: integer division or modulo by zero > 127.0.0.1 - - [16/Jan/2014 13:10:12] "GET / HTTP/1.1" 500 59 > > Thanks > > -- > William > > -- > You received this message because you are subscribed to the Google Groups > "pylons-discuss" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at http://groups.google.com/group/pylons-discuss. > For more options, visit https://groups.google.com/groups/opt_out. > -- You received this message because you are subscribed to the Google Groups "pylons-discuss" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/pylons-discuss. For more options, visit https://groups.google.com/groups/opt_out.
