python-3.x - 在 python asyncio 中调试并列出所有待处理的协程

标签 python-3.x debugging semaphore python-asyncio ipdb

我有一个大量使用 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/

相关文章:

c - 在 tmp 文件夹中打开文件时使用信号量不起作用

Python threading.thread.start() 不会将控制权返回给主线程

python - Python 中现有模块的 ImportError

python - 如何使用字典中的键查找值

Delphi:如何获取事件变量的地址?

c++ - 获取 POSIX 信号量的名称

Python——字符串错误

visual-studio - 在 Visual Studio 调试器中中断线程创建

ios - 可执行文件使用无效权利签名

Python - 信号量获取可以从特定线程解锁吗?