为什么 aiohttp 响应的 json() 方法需要等待?

Dan*_*iel 4 python-3.x python-asyncio aiohttp

我不明白为什么resp.json()需要等待。据我了解,async/await 在处理 I/O 时很有用。但是,当我在下面的示例中调用 resp.json() 时,Web 请求是否尚未使用上面行中的 session.get() 进行处理?

async with session.get('https://api.github.com/events') as resp:
    print(await resp.json())
Run Code Online (Sandbox Code Playgroud)

Mik*_*mov 5

但是,当我在下面的示例中调用 resp.json() 时,Web 请求是否尚未使用上面行中的 session.get() 进行处理?

不,它只读取 HTTP 标头,要获取响应正文,您需要读取响应的其余部分。

它非常有用,因为如果服务器返回了错误的 HTTP 代码,您可以检查 HTTP 标头并避免读取响应的其余部分。

另一个例子:如果您期望响应正文很大,您可以按块读取它以避免 RAM 过度使用(请查看此处的注释)。