gpt4 book ai didi

python-3.x - 我可以使用 asyncio.wait_for() 作为上下文管理器吗?

转载 作者:行者123 更新时间:2023-12-02 18:49:39 27 4
gpt4 key购买 nike

为什么这不起作用:

try:
async with asyncio.wait_for(aiohttp.get(url), 2) as resp:
print(resp.text())
except asyncio.TimeoutError as e:
pass

给予

async with asyncio.wait_for(aiohttp.get(url), 2) as resp:
AttributeError: __aexit__

据我了解,asyncio.wait_for() 将传递 aiohttp.get() 的 future ,它具有 __aenter____aexit__ 方法(async with aiohttp.get() 有效的事实证明了这一点)。

最佳答案

您不能使用 wait_for(...) 编写async -- wait_for 不支持异步上下文管理器。

我很快就会向 asyncio 添加 Timeout 类 - 请参阅 https://groups.google.com/forum/#!topic/python-tulip/aRc3VBIXyRc对话。

现在你可以尝试aiohttp.Timeout(不过它需要安装一个足够大的包)——或者只是复制这40行代码。

有趣的是:该方法不需要async with——只需旧的好的with就足够了。

UPD 我错过了你已经使用 aiohttp 了。因此,只需遵循 aiohttp timeouts chapter 中的第二个示例即可.

关于python-3.x - 我可以使用 asyncio.wait_for() 作为上下文管理器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34693678/

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