2017-08-02 65 views
5

未決的所有協同程序我有一個生產代碼,嚴重使用asyncio.semaphore模塊懷疑有死鎖問題。 我已經找到了一些如何附加到unix信號運行python代碼的解決方案,使用ipdb.set_trace()進行調試,並在asyncio.Task.all_tasks()上列出了事件循環中的所有任務。我是否可以進一步檢查每個任務的堆棧框架,或查看目前正在等待期貨的每條協同程序行ipdb調試並列出未來在python asyncio

+1

每個任務都有方法'Task.get_stack()'。也許這就是你想要的。 – Qeek

+1

@Qeek謝謝你的想法。 ''[map(asyncio.Task.print_stack,asyncio.Task.all_tasks())]'''可以正常工作。 – RainJay

回答

0

如OP觀察到的,進一步的檢查可以與

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

獲得(OP是肯定自由self-answer。)