Sorry this isn't clear but pyramid_retry is not a tween. On Fri, Apr 28, 2017 at 1:45 PM, Bert JW Regeer <[email protected]> wrote:
> Here is the motivation for that: > > https://github.com/Pylons/pyramid_tm/pull/55 > > When Pyramid 1.9 drops, you’ll want to have the following: > > rollbar -> pyramid_retry -> pyramid_tm -> EXC_VIEW -> your_app > > Bert > > On Apr 28, 2017, at 12:25, Theron Luhn <[email protected]> wrote: > > Thanks for pointing me to that SQLAlchemy cookie cutter, it was very > helpful. I was able to get something up and working with pyramid_tm and > zope.sqlalchemy. > > Do you know the motivation for pyramid_tm to be above EXC_VIEW by > default? I moved it below EXC_VIEW since I wanted commit errors to be > handled by the exception views. Is there any reason why I shouldn’t do > this? > > — Theron > > > > On Apr 28, 2017, at 12:12 AM, Bert JW Regeer <[email protected]> wrote: > > Sorry, I fired a little too soon… > > You might want to look at the current state of the art in our sqlalchemy > cookie cutter: > > https://github.com/Pylons/pyramid-cookiecutter-alchemy > > Request finalized callbacks are explicitly outside of tweens, and outside > of any encapsulation. > > You’ll want to look at pyramid_tm or build a tween yourself that handles > things in a similar fashion. > > On Apr 28, 2017, at 00:20, Theron Luhn <[email protected]> wrote: > > I have a pretty standard setup of Pyramid and SQLAlchemy, based off > http://docs.pylonsproject.org/projects/pyramid_cookbook/ > en/latest/database/sqlalchemy.html > > However, this has a problem: The `cleanup` callback executes *after* the > tween has returned. I use tweens for both error logging (Rollbar) and > request logging (output via python-fluent-loggerd). This means that if the > commit and associated flush fail, neither my request logger nor error > logging catch it. > > For example, if my tween looked like this: > > > class Tween: > def __init__(self, handler, register): > self.handler = handler > > def __call__(self, request): > start = time() > response = self.handler(request) > duration = time() - start > log(duration, response.status_code) # This shows a success > return response # session.commit() fails sometime after this > > > The log call would report an HTTP 200, even the end result may be a HTTP > 500 due to a failure in session.commt() > > The obvious solution is to move logging to the WSGI middleware layer, but > then I lose all the Pyramid-specific details, which I am loath to do. I > could also manually add a try/except to handle errors in the cleanup and > report to Rollbar, but that still means my request logs show a success. > > Is there a way I can force SQLAlchemy to commit/rollback (or at least > flush) before the passing the baton back to the tweens? > > -- > 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]. > To view this discussion on the web visit https://groups.google. > com/d/msgid/pylons-discuss/a98bf35f-d120-40b4-8168- > fe4fc2f09f84%40googlegroups.com > <https://groups.google.com/d/msgid/pylons-discuss/a98bf35f-d120-40b4-8168-fe4fc2f09f84%40googlegroups.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > > > > -- > You received this message because you are subscribed to a topic in the > Google Groups "pylons-discuss" group. > To unsubscribe from this topic, visit https://groups.google. > com/d/topic/pylons-discuss/s5frQK7ES-s/unsubscribe. > To unsubscribe from this group and all its topics, send an email to > [email protected]. > To post to this group, send email to [email protected]. > To view this discussion on the web visit https://groups.google. > com/d/msgid/pylons-discuss/B511E99D-97ED-4088-AC83-230157C0E798%400x58.com > <https://groups.google.com/d/msgid/pylons-discuss/B511E99D-97ED-4088-AC83-230157C0E798%400x58.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > > > > -- > 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]. > To view this discussion on the web visit https://groups.google.com/d/ > msgid/pylons-discuss/5CA12DCD-F1F8-40E1-9037-EDC270ED382E%40luhn.com > <https://groups.google.com/d/msgid/pylons-discuss/5CA12DCD-F1F8-40E1-9037-EDC270ED382E%40luhn.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > > > -- > 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]. > To view this discussion on the web visit https://groups.google.com/d/ > msgid/pylons-discuss/E189DD60-2F5A-4D44-96AF-FB5A5D43670D%400x58.com > <https://groups.google.com/d/msgid/pylons-discuss/E189DD60-2F5A-4D44-96AF-FB5A5D43670D%400x58.com?utm_medium=email&utm_source=footer> > . > > For more options, visit https://groups.google.com/d/optout. > -- 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]. To view this discussion on the web visit https://groups.google.com/d/msgid/pylons-discuss/CAKdhhwFgvMvShfwaQ%2B406O-i7mopeqs6OUMwbgQWB%2B0NQaRRWQ%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.
