На днях мне прилетела задача, в которой нужно было вычерпывать данные по HTTP с такими вводными:
-
Есть ограничение по количеству запросов в минуту
-
Объём данных - миллионы записей
-
Один запрос выполняется долго (возвращает много данных)
-
Нужен асинхронный механизм выгрузки
Не включая мозг, я начал накидывать решение...
Грабли №1: async, который работает синхронно
async def fetch_all_pages():
...
while True:
response = await fetch( # ← ошибка
f"/resource?page={page}"
)
...
page += 1
...
Формально:
-
async
-
await
Фактически:
-
один запрос за разЧитать полностью »

