【发布时间】:2021-10-12 01:44:28
【问题描述】:
我目前正在使用aiohttp(来自requests 模块)进行我的第一个“婴儿步骤”。
我尝试稍微简化请求,这样我就不必为我的主模块中的每个请求使用上下文管理器。
因此我尝试了这个:
async def get(session, url, headers, proxies=None):
async with session.get(url, headers=headers, proxy=proxies) as response:
response_object = response
return response_object
但结果是:
<class 'aiohttp.client_exceptions.ClientConnectionError'> - Connection closed
请求在上下文管理器中可用。当我尝试在上述函数的上下文管理器中访问它时,一切正常。
但是它是否也可以保存在变量<response_object> 中,然后返回,以便我可以在上下文管理器之外访问它?
有什么解决方法吗?
【问题讨论】:
-
您不是必须等待回复才能返回吗?
response_object = await response -
不,响应对象本身不能等待。只有它的某些方法(例如 text() 或 json() )需要等待
-
啊,好的,感谢您清除它。
-
出于好奇,当初为什么要退货?
-
所以我不需要在主函数中打开上下文管理器,如果你有很多缩进块,它会变得非常混乱。但我现在可能不得不这样做
标签: python python-requests scope aiohttp