gpt4 book ai didi

从 loop.create_task() 引发的 python asyncio 异常

转载 作者:行者123 更新时间:2023-11-28 22:11:26 28 4
gpt4 key购买 nike

我希望我的代码使用 python logging 来记录异常。在我通常使用 await 的代码中,通常会引发异常,因此:

尝试:
等待 code_that_can_raise()
除了异常为 e:
logger.exception("异常发生")

工作正常。

但是,当使用loop.create_task(coro())

我不确定如何捕获这里的异常。
包装 create_task() 调用显然是行不通的。在代码中记录每个异常的最佳解决方案是什么?

最佳答案

What is the best solution to log every exception in the code?

如果您控制create_task的调用,但不控制coro()中的代码,那么您可以编写一个日志包装器:

async def log_exceptions(awaitable):
try:
return await awaitable
except Exception:
logger.exception("Unhandled exception")

然后你可以调用loop.create_task(log_exceptions(coro()))

如果您不能或不想包装每个 create_task,您可以调用 loop.set_exception_handler ,将异常设置为您自己的函数,该函数将根据您的需要记录异常。

关于从 loop.create_task() 引发的 python asyncio 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55708097/

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