我有一个大量使用 asyncio.semaphore 模块的生产代码,该模块被怀疑存在死锁问题。
我已经找到了一些关于如何使用 unix 信号附加到运行 python 代码的解决方案,使用 ipdb.set_trace()
进行调试并使用 asyncio.Task.all_tasks()
列出事件循环中的所有任务.我是否可以进一步检查每个任务的堆栈帧或查看 ipdb
上的 future 当前待处理的每一行协程? ?
最佳答案
正如 OP 所观察到的,可以通过以下方式进行进一步检查
[*map(asyncio.Task.print_stack, asyncio.Task.all_tasks())]
(OP 当然是免费的 self-answer 。)
关于python-3.x - 在 python asyncio 中调试并列出所有待处理的协程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45451437/