Python 猴子补丁库 wrapture 值得关注

Simon Willison7 天前

Graham Dumpleton 最近发布的 Python 猴子补丁库 wrapture,正在展现出成为开发者实用工具的潜力。它的定位并不只是测试替身工具,也覆盖了可观测性场景,例如类似 New Relic 风格的追踪。

自 8 月 31 日首次发布以来,相关教程几乎每天都在更新。目前已经覆盖的主题包括:

  • wrapture 入门:介绍这个新的猴子补丁库,说明它如何同时服务于测试和可观测性。
  • 用 wrapture 做单元测试:展示如何完成类似 unittest.mock 的工作。
  • 记录调用过程:将方法调用记录为时间线,并进一步处理、展示为树状结构。
  • 分阶段行为:让被补丁的方法在多次调用中呈现不同的行为。
  • 不止于可调用对象:支持对属性、字典、生成器等进行猴子补丁。
  • 实时追踪:追踪正在运行的应用,观察其实际执行路径。
  • 零代码追踪:通过单独的 TOML 配置文件启用追踪,无需修改 Python 代码。
  • 追踪 Flask 应用:借助独立的 wrapture-instrumentation 包对 Flask 应用进行插桩。
  • 定位慢代码:记录耗时信息,既支持单次调用,也支持跨多次调用的聚合统计。
  • 导出到 OpenTelemetry:将追踪数据导出到 OpenTelemetry。

wrapture-instrumentation 目前还覆盖了不少常见 Python 生态组件,包括:

aiohttp.clientaiohttp.webdjangofastapiflaskgrpchttp.clienthttpxjinja2requestssqlalchemysqlite3starletteurllib.requesturllib3uvicornwerkzeug.servingwsgiref.simple_serverxmlrpc.clientxmlrpc.server

此外,wrapture 还提供了一组基于 JupyterLab Notebook 的交互式工作坊,方便开发者边学边试。

需要注意的是,wrapture 目前仍处于 alpha 阶段。不过从现有能力看,它已经具备较强的可用性,尤其是可以通过 TOML 文件在不改动业务代码的情况下进行配置和试用,这对调试、测试和观测现有 Python 应用都很有吸引力。

对于关注 Python 测试、可观测性、运行时追踪和猴子补丁技术的开发者来说,wrapture 值得持续关注。

评论

请登录后发表观点

暂无数据