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

Rai*_*Jay 7 debugging semaphore python-3.x ipdb python-asyncio

我有一个生产代码,大量使用asyncio.semaphore模块,怀疑有死锁问题.我已经找到了一些解决方案,如何使用unix信号附加到运行python代码,调试ipdb.set_trace()并列出事件循环中的所有任务asyncio.Task.all_tasks().我可以进一步检查每个任务的堆栈框架,还是查看当前正在等待的各个协程路线ipdb

J_H*_*J_H 3

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

[*map(asyncio.Task.print_stack, asyncio.Task.all_tasks())]
Run Code Online (Sandbox Code Playgroud)

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