首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Python中调试卡住的异步协程?

如何在Python中调试卡住的异步协程?
EN

Stack Overflow用户
提问于 2021-01-13 23:18:50
回答 1查看 428关注 0票数 7

在我的产品代码中有很多协程,它们在处理请求时被卡在未知的位置。我使用Python support extension将gdb附加到进程,但它没有显示进程停滞的协程中的确切行,只显示了主堆栈跟踪。下面是一个最小的例子:

代码语言:javascript
复制
import asyncio

async def hello():
    await asyncio.sleep(30)
    print('hello world')

asyncio.run(hello())
代码语言:javascript
复制
(gdb) py-bt
Traceback (most recent call first):
  File "/usr/lib/python3.8/selectors.py", line 468, in select
    fd_event_list = self._selector.poll(timeout, max_ev)
  File "/usr/lib/python3.8/asyncio/base_events.py", line 2335, in _run_once
  File "/usr/lib/python3.8/asyncio/base_events.py", line 826, in run_forever
    None, getaddr_func, host, port, family, type, proto, flags)
  File "/usr/lib/python3.8/asyncio/base_events.py", line 603, in run_until_complete
    self.run_forever()
  File "/usr/lib/python3.8/asyncio/runners.py", line 299, in run
  File "main.py", line 7, in <module>

GDB显示了一个在第7行结束的跟踪,但代码显然卡在了第4行。如何使用嵌套协程来显示更完整的跟踪?

EN

回答 1

Stack Overflow用户

发布于 2021-05-27 19:44:22

您可以使用aiodebug.log_slow_callbacks.enable(0.05)

更多信息请关注:https://pypi.org/project/aiodebug/

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65704785

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档