格雷厄姆·邓普尔顿:用包装描摹酒壶 笔记

格雷厄姆·邓普尔顿:用包装描摹酒壶

追踪 Web 应用程序的请求涉及捕获 HTTP 请求详情及其处理过程中产生的所有调用,并将其组织为分层树结构。WSGI 应用程序在追踪方面存在挑战,因为状态和头部通过回调传递,请求体是一个在调用后被消耗的迭代器,且异常由内部处理。一个 Flask 应用程序示例展示了这一点,其中包含用于健康检查、引用和订单的路由。当前的追踪配置现在包括一个 [[instrument]] 条目,用于指定 Flask 的追踪插件。此设置允许对请求流进行详细观察。当处理 Flask 请求时,追踪显示请求行启动树结构,随后是代表应用程序逻辑的嵌套调用。错误通过 Flask 内部的异常处理机制被捕获,使追踪插件能够将这些错误与请求事件关联。为减少噪音,可以忽略特定路径(如健康检查),防止其生成追踪数据。Flask 扩展的生命周期回调也可选择性地排除在观察之外。Flask 追踪的工作原理是将绑定应用于 Flask 执行的关键点,包括其 WSGI 中间件、路由处理和异常管理。追踪的核心单元是请求事件,其中包含所有相关数据,包括状态、持续时间和 HTTP 详情。这种详细的追踪使得分析应用程序时间消耗的位置成为可能。