Simon Willison 6小时前 · 2026-09-12 08:14:50 · 0 阅读
Python 开发者别忽视 wrapture:一款强大的 Monkey Patching 新库
Graham Dumpleton 新推出的 Monkey Patching 库 wrapture 正在成为 Python 开发者不可或缺的工具。我有点惊讶,为什么关于它的讨论这么少?
自 8月31日的首次发布 以来,Graham 几乎每天都在发布新的教程。以下是他迄今发布的所有内容:
- 介绍 wrapture - 一款新的 Monkey Patching 库,同时服务于测试和可观测性(例如类似 New Relic 风格的链路追踪)。
- 使用 wrapture 进行单元测试 - 展示如何用它完成
unittest.mock的常见用例。 - 使用 wrapture 记录调用 - 将方法调用记录为时间线,并作为树状结构进行处理和展示。
- wrapture 中的分阶段行为 - 安排被补丁修改的方法在多次调用中改变行为。
- wrapture 中的超越可调用对象 - Monkey Patching 属性、字典和生成器。
- 使用 wrapture 进行实时追踪 - 追踪正在运行的应用程序,以了解其具体工作机制。
- 使用 wrapture 进行零代码追踪 - 通过单独的 TOML 文件配置追踪,完全无需修改 Python 代码。
- 用 wrapture 追踪 Flask - 使用独立的 wrapture-instrumenation 包对 Flask 应用做埋点。该包还为
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 找出慢代码 - wrapture 提供的计时工具,既能记录单次调用耗时,也能聚合多次调用的数据。
- wrapture 中的 OpenTelemetry 导出 - 将追踪数据导出到 OpenTelemetry。
Graham 还为 wrapture 准备了一套以 JupyterLab notebook 形式实现的交互式工作坊。
Wrapture 目前还处于 alpha 阶段,但已经非常实用了——尤其是只需一个 TOML 文件就能配置并试用,完全不用改任何 Python 代码。
感觉这就是那种一旦掌握、往后多年都能在各类问题上派上用场的瑞士军刀式工具包。
原始来源: Simon Willison