Python异步编程的跟踪回溯工具
项目描述
asynctb是一个库,可以帮助您获取正在运行的Python程序的部分跟踪回溯。它最初是为异步任务设计的(因此得名),但也提供了一些对线程、greenlets和普通同步代码的支持。它与Trio异步框架有松散的联系,并且与Trio一样,对可用性和正确性有着执着的追求。虽然您不需要与Trio一起使用它,但其唯一的外部依赖项是attrs。
这主要被视为其他调试和内省工具的构建块。您可以直接使用它,但仅对面向最终用户的美好事物(如美化输出)提供基本支持。另一方面,核心逻辑非常灵活
可以为生成器(普通和异步)、协程对象、greenlets、线程和帧对象的范围提取跟踪回溯。
可以通过定义一个“unwrap”来处理其他可等待对象,该“unwrap”接收该类型的一个可等待对象,并返回一个协程或生成器。一些是开箱即用的,用于异步生成器asend()和athrow()方法和coroutine_wrapper对象。第三方包可以添加更多。
回溯可以包含有关每个帧中哪些上下文管理器正在活动的信息,包括对上下文管理器对象的引用。例如,这可以用来绘制详细的Trio任务树。逻辑知道如何查看@contextmanager、ExitStack及其异步等效项(标准库中的和async_generator和async_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的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 93a43c5c47447a34287da6d99e20e93f166e189c845106b2c07ac6d33837e47d |
|
MD5 | b9bfabc6c3ca065ee05019ba1eff219d |
|
BLAKE2b-256 | 21ed7b1108b4a77c83feaf988b850e57c1f4a3f69da3530a090a9913e4ecccee |
asynctb-0.0.0a0-py3-none-any.whl的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | f7f75f263a721c1c3d64160d93b0f06fd0f6f7399ab4c54dc745c23ecfb1c8dc |
|
MD5 | 5e11b11d17dda82fa2f6a4846efcf994 |
|
BLAKE2b-256 | d50623c506108d9b1674de83426c18dd87903fda506f8261b0396f458d7066d9 |