def _handle_request_exception(self, e): if isinstance(e, Failure): exc_type = e.type exc_value = e.value exc_tb = e.getTracebackObject() e = e.value else: exc_type, exc_value, exc_tb = sys.exc_info() if isinstance(e, (HTTPError, HTTPAuthenticationRequired)): if GLSettings.log_requests_responses and e.log_message: string_format = "%d %s: " + e.log_message args = [e.status_code, self._request_summary()] + list(e.args) msg = lambda *args: string_format % args log.msg(msg(*args)) if e.status_code not in httplib.responses: log.msg("Bad HTTP status code: %d" % e.status_code) return self.send_error(500, exception=e) else: return self.send_error(e.status_code, exception=e) else: log.err("Uncaught exception %s %s %s" % (exc_type, exc_value, exc_tb)) if GLSettings.log_requests_responses: log.msg(e) mail_exception_handler(exc_type, exc_value, exc_tb) return self.send_error(500, exception=e)
def _handle_request_exception(self, e): ret = RequestHandler._handle_request_exception(self, e) if isinstance(e, Failure): exc_type, exc_value, exc_tb = [e.type, e.value, e.getTracebackObject()] e = e.value else: exc_type, exc_value, exc_tb = sys.exc_info() if not isinstance(e, (template.TemplateError, HTTPError, HTTPAuthenticationRequired)): mail_exception_handler(exc_type, exc_value, exc_tb) return ret
def _operation(self): try: self.stats_collection_start() yield self.operation() self.stats_collection_end() except Exception as e: log.err("Exception while performing scheduled operation %s: %s" % \ (type(self).__name__, e)) try: if isinstance(e, Failure): exc_type = e.type exc_value = e.value exc_tb = e.getTracebackObject() else: exc_type, exc_value, exc_tb = sys.exc_info() mail_exception_handler(exc_type, exc_value, exc_tb) except Exception: pass
def _operation(self): try: self.stats_collection_start() yield self.operation() self.stats_collection_end() except Exception as e: log.err("Exception while performin scheduled operation %s: %s" % \ (type(self).__name__, e)) try: if isinstance(e, Failure): exc_type = e.type exc_value = e.value exc_tb = e.getTracebackObject() else: exc_type, exc_value, exc_tb = sys.exc_info() mail_exception_handler(exc_type, exc_value, exc_tb) except Exception: pass
def test_mail_exception_handler(self): yield self.test_model_count(models.Mail, 0) mailutils.mail_exception_handler(*sys.exc_info()) yield self.test_model_count(models.Mail, 1)