调试并列出将来在python asyncio中挂起的所有协程



我有一个生产代码,它大量使用了asyncio.semaphore模块,该模块被怀疑存在死锁问题。 我已经找到了一些解决方案,说明如何使用 unix 信号附加到正在运行的 python 代码,使用ipdb.set_trace()进行调试并使用asyncio.Task.all_tasks()列出事件循环中的所有任务。我可以进一步检查每个任务的堆栈框架或查看当前由 Future onipdb挂起的每一行协程吗?

正如OP所观察到的,可以通过以下方法进行进一步的检查

[*map(asyncio.Task.print_stack, asyncio.Task.all_tasks())]

(OP当然可以自由地自我回答。

相关内容

  • 没有找到相关文章

最新更新