def __call__(self, environ, start_response): # Intercept start_response sub_app_start_response = util.SubAppStartResponse() try: try: # request_server app may be a generator (for example the GET handler) # So we must iterate - not return self._application(..)! # Otherwise the we could not catch exceptions here. response_started = False app_iter = self._application(environ, sub_app_start_response) for v in app_iter: # Start response (the first time) if not response_started: # Success! start_response(sub_app_start_response.status, sub_app_start_response.response_headers, sub_app_start_response.exc_info) response_started = True yield v # Close out iterator if hasattr(app_iter, "close"): app_iter.close() # Start response (if it hasn't been done yet) if not response_started: # Success! start_response(sub_app_start_response.status, sub_app_start_response.response_headers, sub_app_start_response.exc_info) return except DAVError, e: _logger.debug("re-raising %s" % e) raise except Exception, e: # Caught a non-DAVError if self._catch_all_exceptions: # Catch all exceptions to return as 500 Internal Error traceback.print_exc( 10, environ.get("wsgi.errors") or sys.stderr) raise asDAVError(e) else: util.warn("ErrorPrinter: caught Exception") traceback.print_exc(10, sys.stderr) raise
def __call__(self, environ, start_response): # Intercept start_response sub_app_start_response = util.SubAppStartResponse() try: try: # request_server app may be a generator (for example the GET handler) # So we must iterate - not return self._application(..)! # Otherwise the we could not catch exceptions here. response_started = False app_iter = self._application(environ, sub_app_start_response) for v in app_iter: # Start response (the first time) if not response_started: # Success! start_response(sub_app_start_response.status, sub_app_start_response.response_headers, sub_app_start_response.exc_info) response_started = True yield v # Close out iterator if hasattr(app_iter, "close"): app_iter.close() # Start response (if it hasn't been done yet) if not response_started: # Success! start_response(sub_app_start_response.status, sub_app_start_response.response_headers, sub_app_start_response.exc_info) return except DAVError, e: _logger.debug("re-raising %s" % e) raise except Exception, e: # Caught a non-DAVError if self._catch_all_exceptions: # Catch all exceptions to return as 500 Internal Error # traceback.print_exc() util.warn(traceback.format_exc()) raise asDAVError(e) else: util.warn("ErrorPrinter: caught Exception") util.warn(traceback.format_exc()) raise
def __call__(self, environ, start_response): try: try: # request_server app may be a generator (for example the GET handler) # So we must iterate - not return self._application(..)! # Otherwise the we could not catch exceptions here. for v in self._application(environ, start_response): yield v except DAVError, e: _logger.debug("re-raising %s" % e) raise except Exception, e: # Caught a non-DAVError if self._catch_all_exceptions: # Catch all exceptions to return as 500 Internal Error traceback.print_exc(10, environ.get("wsgi.errors") or sys.stderr) raise asDAVError(e) else: util.warn("ErrorPrinter: caught Exception") traceback.print_exc(10, sys.stderr) raise