From 99e73ff7fabe256cd736810e79bbc12d43812d3b Mon Sep 17 00:00:00 2001 From: Bo Zhu Date: Tue, 4 Jun 2013 01:24:37 -0400 Subject: [PATCH] make raven works for tornado even after self.flush() or self.finish() is called --- raven/contrib/tornado/__init__.py | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/raven/contrib/tornado/__init__.py b/raven/contrib/tornado/__init__.py index 60d0d4f61..b6660cf0e 100644 --- a/raven/contrib/tornado/__init__.py +++ b/raven/contrib/tornado/__init__.py @@ -244,9 +244,21 @@ def captureException(self, exc_info=None, **kwargs): def captureMessage(self, message, **kwargs): return self._capture('captureMessage', message=message, **kwargs) - def write_error(self, status_code, **kwargs): + def log_exception(self, typ, value, tb): """Override implementation to report all exceptions to sentry. + log_exception() is added in Tornado v3.1. """ - rv = super(SentryMixin, self).write_error(status_code, **kwargs) - self.captureException(exc_info=kwargs.get('exc_info')) + rv = super(SentryMixin, self).log_exception(typ, value, tb) + self.captureException(exc_info=(typ, value, tb)) return rv + + def send_error(self, status_code=500, **kwargs): + """Override implementation to report all exceptions to sentry, even + after self.flush() or self.finish() is called, for pre-v3.1 Tornado. + """ + if hasattr(super(SentryMixin, self), 'log_exception'): + return super(SentryMixin, self).send_error(status_code, **kwargs) + else: + rv = super(SentryMixin, self).send_error(status_code, **kwargs) + self.captureException(exc_info=kwargs.get('exc_info')) + return rv