跳转到主要内容

Python异步编程的跟踪回溯工具

项目描述

asynctb是一个库,可以帮助您获取正在运行的Python程序的部分跟踪回溯。它最初是为异步任务设计的(因此得名),但也提供了一些对线程、greenlets和普通同步代码的支持。它与Trio异步框架有松散的联系,并且与Trio一样,对可用性和正确性有着执着的追求。虽然您不需要与Trio一起使用它,但其唯一的外部依赖项是attrs

这主要被视为其他调试和内省工具的构建块。您可以直接使用它,但仅对面向最终用户的美好事物(如美化输出)提供基本支持。另一方面,核心逻辑非常灵活

  • 可以为生成器(普通和异步)、协程对象、greenlets、线程和帧对象的范围提取跟踪回溯。

  • 可以通过定义一个“unwrap”来处理其他可等待对象,该“unwrap”接收该类型的一个可等待对象,并返回一个协程或生成器。一些是开箱即用的,用于异步生成器asend()athrow()方法和coroutine_wrapper对象。第三方包可以添加更多。

  • 回溯可以包含有关每个帧中哪些上下文管理器正在活动的信息,包括对上下文管理器对象的引用。例如,这可以用来绘制详细的Trio任务树。逻辑知道如何查看@contextmanagerExitStack及其异步等效项(标准库中的和async_generatorasync_exit_stack中流行的反向移植)。第三方包也可以定义上下文管理器解包器。

  • 有多个自定义点,允许第三方包指定它们的一些函数及其调用者应从asynctb回溯中排除,或者应包含asynctb知道如何处理的另一个对象的回溯。例如,被trio.to_thread.run_sync()阻塞的Trio任务的回溯可以涵盖线程中运行的代码。

当然,如果您想禁用所有这些功能,只保留一个接受协程对象的inspect.stack()版本,您也可以做到。

asynctb需要Python 3.6或更高版本。它在CPython(从3.6到3.10-dev的每个小版本)和PyPy上进行了测试,在Linux、Windows和macOS上运行。它可能在其他操作系统上也能工作。基本功能在其他解释器上也能工作,但上下文管理器解码将不够智能,并且如果没有可用的gc.get_referents(),则完全无法工作。

这仍在开发中。它具有完整的测试覆盖率,但在最初发布之前可能会进行一些不兼容的API更改。文档目前也很简略。请关注这个空间!

许可证:您可以选择MIT或Apache许可证2.0

项目详情


下载文件

下载您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源分布

asynctb-0.0.0a0.tar.gz (53.4 kB 查看散列)

上传时间

构建分布

asynctb-0.0.0a0-py3-none-any.whl (52.6 kB 查看散列)

上传时间 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面