gpt4 book ai didi

python - 如何在 Python 中调试卡住的 asyncio 协程?

转载 作者:行者123 更新时间:2023-12-04 11:32:03 27 4
gpt4 key购买 nike

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

import asyncio

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

asyncio.run(hello())
(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 行。如何使用嵌套协程使其显示更完整的跟踪?

最佳答案

您可以使用 aiodebug.log_slow_callbacks.enable(0.05)
更多请关注:https://pypi.org/project/aiodebug/

关于python - 如何在 Python 中调试卡住的 asyncio 协程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65704785/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com