• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

Python tbtools.get_current_traceback函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Python中werkzeug.debug.tbtools.get_current_traceback函数的典型用法代码示例。如果您正苦于以下问题:Python get_current_traceback函数的具体用法?Python get_current_traceback怎么用?Python get_current_traceback使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。



在下文中一共展示了get_current_traceback函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。

示例1: __call__

    def __call__(self, error):
        template_fname = self.data_browser.error_template

        if isinstance(error, PermissionDenied):
            permissions = []
            for idx, need in enumerate(error.args[0].needs):
                permissions.append(str(need))
            err_msg = _(
                u'this operation needs the following permissions: %(permissions)s, contact administrator to grant '
                u'them!',
                permissions=";".join(permissions))
        elif isinstance(error, ValidationError):
            err_msg = ",".join("%s: %s" % (k, v) for k, v in error.args[0].items())
        elif isinstance(error, NotFound):
            err_msg = _("Sorry, object doesn't exist!")
        else:
            # we need to log the crime scene
            # note, this is the last line of defence, we must resolve it here!
            traceback = get_current_traceback(skip=1, show_hidden_frames=False,
                                              ignore_system_exceptions=True)
            self.data_browser.app.logger.error("%s %s" % (request.method, request.url))
            self.data_browser.app.logger.error(traceback.plaintext)
            err_msg = _(u'Internal error "%(err)s", please contact us!', err=str(error))

        return render_template(template_fname, hint_message=err_msg, error=error,
                               back_url=request.args.get("url", "/"))
开发者ID:PuZheng,项目名称:Flask-DataBrowser,代码行数:26,代码来源:error_handle.py


示例2: _post_data

    def _post_data(self, context):
        """POST data to the the Exceptional API. If DEBUG is True then data is
        sent to ``EXCEPTIONAL_DEBUG_URL`` if it has been defined. If TESTING is
        true, error data is stored in the global ``flask.g.exceptional`` variable.
        
        :param context: The current application context.
        """
        traceback = tbtools.get_current_traceback()
        error_data = json.dumps({
            "application_environment": self.__get_application_data(context.app),
            "client": context.app.extensions["exceptional"],
            "request": self.__get_request_data(context.app, context.request, context.session),
            "exception": self.__get_exception_data(traceback)
        })
        
        if context.app.testing:
            g.exceptional = error_data
        
        if self.url:
            request = Request(self.url)
            request.add_header("Content-Type", "application/json")
            
            if context.app.debug:
                data = error_data
            else:
                request.add_header("Content-Encoding", "deflate")
                data = compress(error_data, 1)
            
            try:
                urlopen(request, data)
            except URLError:
                message = "Unable to connect to {0}. See \
http://status.getexceptional.com for details. Error data:\n{1}".format(self.url, error_data)
                self.app.logger.warning(message, exc_info=True)
开发者ID:lost-theory,项目名称:flask-exceptional,代码行数:34,代码来源:exceptional.py


示例3: debug_application

    def debug_application(self, environ, start_response):
        app_iter = None
        try:
            app_iter = self.app(environ, start_response)
            for item in app_iter:
                yield item

            if hasattr(app_iter, 'close'):
                app_iter.close()
        except:
            if hasattr(app_iter, 'close'):
                app_iter.close()
            traceback = get_current_traceback(skip=1, show_hidden_frames=self.show_hidden_frames, ignore_system_exceptions=True)
            for frame in traceback.frames:
                self.frames[frame.id] = frame

            self.tracebacks[traceback.id] = traceback
            try:
                start_response('500 INTERNAL SERVER ERROR', [('Content-Type', 'text/html; charset=utf-8')])
            except:
                environ['wsgi.errors'].write('Debugging middleware caught exception in streamed response at a point where response headers were already sent.\n')
            else:
                yield traceback.render_full(evalex=self.evalex).encode('utf-8', 'replace')

            traceback.log(environ['wsgi.errors'])
开发者ID:connoryang,项目名称:dec-eve-serenity,代码行数:25,代码来源:__init__.py


示例4: errorlog

 def errorlog(exception):
     """ We want to log exception information to file for later investigation """
     traceback = get_current_traceback(ignore_system_exceptions=True, show_hidden_frames=True)
     log.error(traceback.plaintext)
     last = traceback.frames[-1]
     now = datetime.datetime.now().replace(microsecond=0)
     return render_template("error.html", now=now, name=os.path.basename(last.filename), line=last.lineno, exception=exception)
开发者ID:drytoastman,项目名称:wwscc,代码行数:7,代码来源:app.py


示例5: send_exception

def send_exception(subject):
    """Send Python exception tracebacks via email to the ADMINS list.

    Use the same HTML styling as Flask tracebacks in debug web servers.

    This function must be called while the exception is happening. It picks up the raised exception with sys.exc_info().

    Positional arguments:
    subject -- subject line of the email (to be prepended by 'Application Error: ').
    """
    # Generate and modify html.
    tb = tbtools.get_current_traceback()  # Get exception information.
    with _override_html():
        html = tb.render_full().encode('utf-8', 'replace')
    html = html.replace('<blockquote>', '<blockquote style="margin: 1em 0 0; padding: 0;">')
    subject = 'Application Error: {}'.format(subject)

    # Apply throttle.
    md5 = hashlib.md5('{}{}'.format(subject, html)).hexdigest()
    seconds = int(current_app.config['MAIL_EXCEPTION_THROTTLE'])
    lock = redis.lock(EMAIL_THROTTLE.format(md5=md5), timeout=seconds)
    have_lock = lock.acquire(blocking=False)
    if not have_lock:
        current_app.logger.debug('Suppressing email: {}'.format(subject))
        return

    # Send email.
    msg = Message(subject=subject, recipients=current_app.config['ADMINS'], html=html)
    mail.send(msg)
开发者ID:crypex,项目名称:poppet,代码行数:29,代码来源:email.py


示例6: get_current_traceback

 def get_current_traceback(self):
     "Get the current Python traceback, keeping stack frames in debug app."
     traceback = get_current_traceback()
     for frame in traceback.frames:
         self.debug_app.frames[frame.id] = frame
     self.debug_app.tracebacks[traceback.id] = traceback
     return traceback
开发者ID:justjake,项目名称:squidwork,代码行数:7,代码来源:debuggable.py


示例7: json_response

def json_response(f, *args, **kwargs):
    try:
        response = f(*args, **kwargs)

    except HTTPException as e:
        data = {'error': str(e),
                'description': e.description}
        return jsonify(data), e.code

    except Exception as e:
        app.logger.error('Exception during json request: %r', e)
        # Werkzeug sends the response and then logs, which is fiddly
        from werkzeug.debug.tbtools import get_current_traceback
        traceback = get_current_traceback(ignore_system_exceptions=True)
        app.logger.info('Traceback %s', traceback.plaintext)

        data = {'error': e.__class__.__name__,
                'description': str(e)}
        return jsonify(data), 500

    else:
        if isinstance(response, (app.response_class, BaseResponse)):
            return response

        return jsonify(response), 200
开发者ID:bfirsh,项目名称:Website,代码行数:25,代码来源:__init__.py


示例8: wrapper

        def wrapper(request):
            try:
                response = func(request)
            except Exception as e:
                tb = get_current_traceback()
                return responses.InternalServerError(render_function(tb), headers={"Content-type": content_type})

            return response
开发者ID:pabloalba,项目名称:anillo,代码行数:8,代码来源:exception_handler.py


示例9: render_exception

    def render_exception(self):
        traceback = get_current_traceback()

        for frame in traceback.frames:
            self.debugger.frames[frame.id] = frame
        self.debugger.tracebacks[traceback.id] = traceback

        return traceback.render_full(evalex=True,
                                     secret=self.debugger.secret)
开发者ID:ZhangDewei,项目名称:tornado_debugger,代码行数:9,代码来源:tornado_debugger.py


示例10: handle_request

 def handle_request(self, req):
     with self.request_context(req):
         try:
             response = self.full_dispatch_request()
         except Exception, e:
             self.log_exception(e)
             try:
                 response = self.make_response(self.handle_exception(e))
             except:
                 tb = tbtools.get_current_traceback(skip=1)
                 response = Response(tb.render_summary(), headers={'Content-Type' : 'text/html'})
开发者ID:HVF,项目名称:diesel,代码行数:11,代码来源:web.py


示例11: error

    def error(error):
        if isinstance(error, SQLAlchemyError):
            from lite_mms.database import db

            db.session.rollback()
        from werkzeug.debug.tbtools import get_current_traceback

        traceback = get_current_traceback(skip=1, show_hidden_frames=False,
                                          ignore_system_exceptions=True)
        app.logger.error("%s %s" % (request.method, request.url))
        app.logger.error(traceback.plaintext)
        sender_email(traceback)
        return redirect(url_for("error", errors=u"%s %s时,系统异常" % (request.method, request.url),
                                detail=traceback.render_summary(), url=request.args.get("url", "/")))
开发者ID:amania88,项目名称:lite-mms,代码行数:14,代码来源:basemain.py


示例12: error

 def error(error):
     if isinstance(error, SQLAlchemyError):
         from cloud_dashing.database import db
         db.session.rollback()
     from werkzeug.debug.tbtools import get_current_traceback
     traceback = get_current_traceback(skip=1, show_hidden_frames=False,
                                       ignore_system_exceptions=True)
     app.logger.error("%s %s" % (request.method, request.url))
     app.logger.error(traceback.plaintext)
     sender_email(traceback)
     return render_template("error.html",
                            error=_("Failed to %(method)s %(url)s",
                                    method=request.method, url=request.url),
                            detail=traceback.render_summary(),
                            back_url=request.args.get("__back_url__", "/"))
开发者ID:PuZheng,项目名称:cloud-dashing,代码行数:15,代码来源:basemain.py


示例13: error

    def error(error):
        if isinstance(error, SQLAlchemyError):
            from litefac.database import db

            db.session.rollback()
        from werkzeug.debug.tbtools import get_current_traceback

        traceback = get_current_traceback(skip=1, show_hidden_frames=False,
                                          ignore_system_exceptions=True)
        app.logger.error("%s %s" % (request.method, request.url))
        app.logger.error(traceback.plaintext)
        sender_email(traceback)
        return render_template("error.html", msg=u"%s %s时,系统异常" % (request.method, request.url),
                               detail=traceback.render_summary(),
                               back_url=request.args.get("back_url", "/"),
                               nav_bar=nav_bar, titlename=u"错误"), 403
开发者ID:xiechao06,项目名称:litefac,代码行数:16,代码来源:basemain.py


示例14: debug_application

    def debug_application(self, environ, start_response):
        """Run the application and conserve the traceback frames."""
        app_iter = None
        try:
            app_iter = self.app(environ, start_response)
            for item in app_iter:
                yield item
            if hasattr(app_iter, 'close'):
                app_iter.close()
        except Exception:
            if hasattr(app_iter, 'close'):
                app_iter.close()
            traceback = get_current_traceback(
                skip=1, show_hidden_frames=self.show_hidden_frames,
                ignore_system_exceptions=True)
            for frame in traceback.frames:
                self.frames[frame.id] = frame
            self.tracebacks[traceback.id] = traceback

            try:
                start_response('500 INTERNAL SERVER ERROR', [
                    ('Content-Type', 'text/html; charset=utf-8'),
                    # Disable Chrome's XSS protection, the debug
                    # output can cause false-positives.
                    ('X-XSS-Protection', '0'),
                ])
            except Exception:
                # if we end up here there has been output but an error
                # occurred.  in that situation we can do nothing fancy any
                # more, better log something into the error log and fall
                # back gracefully.
                environ['wsgi.errors'].write(
                    'Debugging middleware caught exception in streamed '
                    'response at a point where response headers were already '
                    'sent.\n')
            else:
                is_trusted = bool(self.check_pin_trust(environ))
                yield traceback.render_full(evalex=self.evalex,
                                            evalex_trusted=is_trusted,
                                            secret=self.secret) \
                    .encode('utf-8', 'replace')

            traceback.log(environ['wsgi.errors'])
开发者ID:CityPulse,项目名称:pickup-planner,代码行数:43,代码来源:__init__.py


示例15: debug_application

    def debug_application(self, environ, start_response):
        """Run the application and conserve the traceback frames."""
        app_iter = None
        try:
            app_iter = self.app(environ, start_response)
            for item in app_iter:
                yield item
            if hasattr(app_iter, 'close'):
                app_iter.close()
        except Exception:
            if hasattr(app_iter, 'close'):
                app_iter.close()
            traceback = get_current_traceback(skip=1, show_hidden_frames=
                                              self.show_hidden_frames,
                                              ignore_system_exceptions=True)
            for frame in traceback.frames:
                self.frames[frame.id] = frame
            self.tracebacks[traceback.id] = traceback

            try:
                start_response('500 INTERNAL SERVER ERROR', [
                    ('Content-Type', 'text/html; charset=utf-8')
                ])
            except Exception:
                # if we end up here there has been output but an error
                # occurred.  in that situation we can do nothing fancy any
                # more, better log something into the error log and fall
                # back gracefully.
                environ['wsgi.errors'].write(
                    'Debugging middleware caught exception in streamed '
                    'response at a point where response headers were already '
                    'sent.\n')
            else:
                yield traceback.render_full(evalex=self.evalex,
                                            lodgeit_url=self.lodgeit_url,
                                            secret=self.secret,
                                            pid=self.multiprocess_support and getpid() or '') \
                               .encode('utf-8', 'replace')

            traceback.log(environ['wsgi.errors'])
开发者ID:dmayle,项目名称:werkzeug,代码行数:40,代码来源:__init__.py


示例16: wrapper

    def wrapper(request, *args, **kwargs):
        try:
            return func(request, *args, **kwargs)

        except api_exceptions.NotFound as ex:
            return responses.NotFound(**_render_error(ex))

        except api_exceptions.Forbidden as ex:
            return responses.Forbidden(**_render_error(ex))

        except api_exceptions.BadRequest as ex:
            return responses.BadRequest(**_render_error(ex))

        except Exception as ex:
            if settings.DEBUG == False:
                return responses.InternalServerError(**_render_error(ex, "Internal error: {}".format(str(ex))))
            else:
                from werkzeug.debug.tbtools import get_current_traceback
                traceback = get_current_traceback()
                return responses.InternalServerError(
                    traceback.plaintext,
                    headers={"Content-type": "text/plain"}
                )
开发者ID:PIWEEK,项目名称:piweekr-back,代码行数:23,代码来源:middlewares.py


示例17: write

                if not headers_sent:
                    write('')
            finally:
                if hasattr(application_iter, 'close'):
                    application_iter.close()
                application_iter = None

        try:
            execute(app)
        except (socket.error, socket.timeout), e:
            self.connection_dropped(e, environ)
        except:
            if self.server.passthrough_errors:
                raise
            from werkzeug.debug.tbtools import get_current_traceback
            traceback = get_current_traceback(ignore_system_exceptions=True)
            try:
                # if we haven't yet sent the headers but they are set
                # we roll back to be able to set them again.
                if not headers_sent:
                    del headers_set[:]
                execute(InternalServerError())
            except:
                pass
            self.server.log('error', 'Error on request:\n%s',
                            traceback.plaintext)

    def handle(self):
        """Handles a request ignoring dropped connections."""
        try:
            return BaseHTTPRequestHandler.handle(self)
开发者ID:bguided,项目名称:synctester,代码行数:31,代码来源:serving.py


示例18: run_wsgi

    def run_wsgi(self):
        app = self.server.app
        environ = self.make_environ()
        headers_set = []
        headers_sent = []

        def write(data):
            if not headers_sent:
                status, response_headers = headers_sent[:] = headers_set
                code, msg = status.split(None, 1)
                self.send_response(int(code), msg)
                header_keys = set()
                for key, value in response_headers:
                    self.send_header(key, value)
                    key = key.lower()
                    header_keys.add(key)

                if 'content-length' not in header_keys:
                    self.close_connection = True
                    self.send_header('Connection', 'close')
                if 'server' not in header_keys:
                    self.send_header('Server', self.version_string())
                if 'date' not in header_keys:
                    self.send_header('Date', self.date_time_string())
                self.end_headers()
            self.wfile.write(data)
            self.wfile.flush()

        def start_response(status, response_headers, exc_info = None):
            if exc_info:
                try:
                    if headers_sent:
                        raise exc_info[0], exc_info[1], exc_info[2]
                finally:
                    exc_info = None

            elif headers_set:
                raise AssertionError('Headers already set')
            headers_set[:] = [status, response_headers]
            return write

        def execute(app):
            application_iter = app(environ, start_response)
            try:
                for data in application_iter:
                    write(data)

                if not headers_sent:
                    write('')
            finally:
                if hasattr(application_iter, 'close'):
                    application_iter.close()
                application_iter = None

        try:
            execute(app)
        except (socket.error, socket.timeout) as e:
            self.connection_dropped(e, environ)
        except:
            if self.server.passthrough_errors:
                raise
            from werkzeug.debug.tbtools import get_current_traceback
            traceback = get_current_traceback(ignore_system_exceptions=True)
            try:
                if not headers_sent:
                    del headers_set[:]
                execute(InternalServerError())
            except:
                pass

            self.server.log('error', 'Error on request:\n%s', traceback.plaintext)
开发者ID:connoryang,项目名称:dec-eve-serenity,代码行数:71,代码来源:serving.py


示例19: _store_traceback

 def _store_traceback(self):
     traceback = get_current_traceback(skip=1,
                                       show_hidden_frames=False,
                                       ignore_system_exceptions=True)
     self.tracebacks[traceback.id] = traceback
     return "/debug/{}".format(traceback.id)
开发者ID:palantir,项目名称:typedjsonrpc,代码行数:6,代码来源:registry.py


示例20: internal_error

def internal_error(exception):
    app.logger.exception(exception)
    tb = tbtools.get_current_traceback()
    print "traceback", tb
    return flask.render_template('500.html', exception=exception, traceback=tb.plaintext)
开发者ID:temcom,项目名称:flock,代码行数:5,代码来源:ui.py



注:本文中的werkzeug.debug.tbtools.get_current_traceback函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Python utils.render_template函数代码示例发布时间:2022-05-26
下一篇:
Python repr.debug_repr函数代码示例发布时间:2022-05-26
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap