支持python3的werkzeug调试器的独立webob端口,用于在将来的turbogears2中替换weberror
backlash的Python项目详细描述
关于齿隙
“反弹”是一种用于Web应用程序调试的瑞士军刀,它提供:
- An Interactive In Browser Debugger based on a Werkzeug Debugger fork ported to WebOb
- Crash reporting by email and on Sentry
- Slow requests reporting by email and on Sentry.
齿隙是涡轮齿轮2.3版本中Weberror的替代品。
安装
间隙可从PYPI安装:
pip install backlash
应该只对大多数用户有效
调试和控制台
反弹支持在崩溃和实时控制台上调试应用程序, 两者都基于werkzeug调试器,并适合于使用webob。
调试功能由DebuggedApplication中间件提供, 使用此中间件包装应用程序将截获任何异常 并在浏览器中显示回溯和交互式控制台。
在/__console__path中也始终可以使用交互式控制台。
上下文注入器
DebuggedApplication中间件还可以提供一个或多个 context injectors,这些是简单的python函数,在 引发异常以检索要存储的上下文并在 调试。
上下文注入器必须返回一个将合并到当前 请求上下文,请求上下文本身将在调试器中可用 作为ctx对象。
例如,turbogears使用这个特性来提供一些对象 在执行过程中可用的,如当前请求。
示例
TurboGears使用调试应用中间件的方式如下:
def _turbogears_backlash_context(environ): tgl = environ.get('tg.locals') return {'request':getattr(tgl, 'request', None)} app = backlash.DebuggedApplication(app, context_injectors=[_turbogears_backlash_context])
异常跟踪
TraceErrorsMiddleware提供了一个wsgi中间件,可以拦截任何异常 在执行期间引发,检索回溯对象并将其提供给一个或多个 reporters记录错误。
默认情况下,EmailReporter和SentryReporter用于发送错误 通过电子邮件和岗哨报告。
EmailReporter支持大多数选项weberror errormiddleware来提供 有点向后兼容,使快速转换成为可能。
虽然使用python日志smtphandler可以轻松复制此函数,但是 traceerRorsMiddleware明确用于Web应用程序崩溃报告 它的好处是能够提供更完整的信息并保持清晰 以及管理错误的独立过程。
示例
TurboGears使用TraceerRorsMiddle软件的方式如下:
from backlash.trace_errors import EmailReporter def _turbogears_backlash_context(environ): tgl = environ.get('tg.locals') return {'request':getattr(tgl, 'request', None)} app = backlash.TraceErrorsMiddleware(app, [EmailReporter(**errorware)], context_injectors=[_turbogears_backlash_context])
慢速请求跟踪
TraceSlowRequestsMiddleware提供了跟踪请求的wsgi中间件 执行时间和报告需要超过指定间隔才能完成的请求 (默认为25秒)。
也可以排除以指定字符串开头的路径列表 避免报告长轮询连接或其他类型的请求 预计有一个长寿的产卵。
示例
TurboGears使用TraceSlowrequestsMiddle软件的方式如下:
from backlash.trace_errors import EmailReporter def _turbogears_backlash_context(environ): tgl = environ.get('tg.locals') return {'request':getattr(tgl, 'request', None)} app = backlash.TraceSlowRequestsMiddleware(app, [EmailReporter(**errorware)], interval=25, exclude_paths=None, context_injectors=[_turbogears_backlash_context])