Почему метод json () ответа aiohttp требует ожидания? - PullRequest
1 голос
/ 11 января 2020

Я не понимаю, почему нужно ждать resp.json(). Насколько я понимаю, async / await полезен при работе с I / O. Но когда я вызываю resp. json () в приведенном ниже примере, не был ли обработан веб-запрос с помощью session.get () в строке выше?

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

1 Ответ

3 голосов
/ 12 января 2020

Но когда я вызываю респ. json () в приведенном ниже примере, не был ли обработан веб-запрос с помощью session.get () в строке выше?

Нет, он читает только заголовки HTTP, чтобы получить тело ответа, вам нужно прочитать остальную часть ответа.

Это довольно полезно, так как вы можете проверить Заголовки HTTP и избегайте чтения остальной части ответа, если, скажем, сервер вернул неправильный код HTTP.

Другой пример: если вы ожидаете, что тело ответа будет большим, вы можете прочитать его кусками, чтобы избежать чрезмерного использования ОЗУ ( отметьте примечание здесь ).

...