/
mialdr
/
python_advanced
Обзор
Документация
Войти
/
mialdr
/
python_advanced
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
module_25_asynchronous_programming/materials/async_cats/main.py
40 строк
988 B
Mikhail
module25 is solved
16 мар 2024, 10:44
16 мар 2024, 10:44
c986738
Код
Авторство
О чём код?
import asyncio from pathlib import Path import aiohttp import aiofiles URL = 'https://cataas.com/cat' CATS_WE_WANT = 10 OUT_PATH = Path(__file__).parent / 'cats' OUT_PATH.mkdir(exist_ok=True, parents=True) OUT_PATH = OUT_PATH.absolute() async def get_cat(client: aiohttp.ClientSession, idx: int) -> bytes: async with client.get(URL) as response: print(response.status) result = await response.read() await write_to_disk(result, idx) async def write_to_disk(content: bytes, id: int): file_path = "{}/{}.png".format(OUT_PATH, id) async with aiofiles.open(file_path, mode='wb') as f: await f.write(content) async def get_all_cats(): async with aiohttp.ClientSession(timeout=aiohttp.ClientTimeout(15)) as client: tasks = [get_cat(client, i) for i in range(CATS_WE_WANT)] return await asyncio.gather(*tasks) def main(): res = asyncio.run(get_all_cats()) print(len(res)) if __name__ == '__main__': main()