Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 22, 2020 18:26:34

Master_Sergius
Зарегистрирован: 2013-09-12
Сообщения: 271
Репутация: +  7  -
Профиль   Отправить e-mail  

Как понять, когда идет сетевой запрос или что именно происходит в aiohttp?

Здравствуйте,

Если следовать примеру с официальной документации aiohttp:

 import aiohttp
import asyncio
 
async def main():
 
    async with aiohttp.ClientSession() as session:
        async with session.get('http://python.org') as response:
 
            print("Status:", response.status)
            print("Content-type:", response.headers['content-type'])
 
            html = await response.text()
            print("Body:", html[:15], "...")
 
loop = asyncio.get_event_loop()
loop.run_until_complete(main())

то имеем здесь две асинхронные точки входа в запрос: session.get('http://python.org') as response и await response.text()
Насколько я понял из кода библиотеки, метод text получает тело ответа потоком и возвращает строку. При этом еще до выполнения мы уже можем видеть response.status 200, то есть сетевой запрос как бы выполнен или что, но и text потом выполняет сетевой запрос. Кто-то может объяснить немного это все в деталях? Что и почему делает каждый запрос?

И можно ли извне посмотреть когда и какие запросы выполняются? Что-то вроде tcpdump?



———————————————————————————
Мой блог о семействе *nix: http://nixtravelling.blogspot.com/

Офлайн

#2 Дек. 22, 2020 19:24:18

Master_Sergius
Зарегистрирован: 2013-09-12
Сообщения: 271
Репутация: +  7  -
Профиль   Отправить e-mail  

Как понять, когда идет сетевой запрос или что именно происходит в aiohttp?

Да, tcpdump показал, что и то и то делает сетевой запрос. И вот если я хочу написать либу для кеша, как же правильно кешировать параметры запроса и ответ?



———————————————————————————
Мой блог о семействе *nix: http://nixtravelling.blogspot.com/

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version