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.client、aiohttp.web、django、fastapi、flask、grpc、http.client、httpx、jinja2、requests、sqlalchemy、sqlite3、starlette、urllib.request、urllib3、uvicorn、werkzeug.serving、wsgiref.simple_server、xmlrpc.client、xmlrpc.server。
此外,wrapture 还提供了一组基于 JupyterLab Notebook 的交互式工作坊,方便开发者边学边试。
需要注意的是,wrapture 目前仍处于 alpha 阶段。不过从现有能力看,它已经具备较强的可用性,尤其是可以通过 TOML 文件在不改动业务代码的情况下进行配置和试用,这对调试、测试和观测现有 Python 应用都很有吸引力。
对于关注 Python 测试、可观测性、运行时追踪和猴子补丁技术的开发者来说,wrapture 值得持续关注。
