Python asynchronous context managers很有用,但它们do not work和asyncio.wait_for Timeouts一起使用。
将超时添加到异步上下文管理器的最佳方法是什么?
最佳答案
将超时添加到异步上下文管理器的最佳方法是什么?
您不能将wait_for
应用于异步上下文管理器,但是可以将其应用于使用它的协程。因此,要将超时添加到上下文管理器,请在异步函数中使用它,然后将超时应用到它。例如:
async def download(url, session):
async with session.get(url) as resp:
return await resp.text()
async def print_google(session):
try:
text = await asyncio.wait_for(download('http://www.google.com', session), 1)
except asyncio.TimeoutError:
text = None
print(text)