我有一个大量使用asyncio.semaphore模块的生产代码,怀疑它有死锁问题。
我已经找到了一些解决方案,如何使用unix信号附加到运行python代码,使用ipdb.set_trace()
进行调试,并使用asyncio.Task.all_tasks()
列出事件循环上的所有任务。我是否可以进一步检查每个任务的堆栈框架或查看ipdb
上的期货当前待处理的每一个协程线?
答案 0 :(得分:0)
正如OP观察到的那样,可以通过
获得进一步的检查[*map(asyncio.Task.print_stack, asyncio.Task.all_tasks())]
(OP当然可以免费self-answer。)