🐍 Как использовать Python для асинхронных запросов с помощью aiohttp и asyncio
👁 При работе с несколькими API или серверами стандартные синхронные запросы в Python медленны. Асинхронные запросы с библиотекой aiohttp и asyncio ускоряют выполнение кода и позволяют обрабатывать множество запросов параллельно, что особенно полезно при одновременной отправке и ожидании ответов.
📝 Вот как это можно реализовать:
import aiohttp
import asyncio
async def fetch(url):
async with aiohttp.ClientSession() as session:
async with session.get(url) as response:
return await response.text()
async def main():
urls = ['https://httpbin.org/get', 'https://httpbin.org/delay/1', 'https://httpbin.org/delay/3']
tasks = [fetch(url) for url in urls]
results = await asyncio.gather(*tasks)
for result in results:
print(result[:100]) # Печатаем первые 100 символов из каждого ответа
# Запускаем асинхронный цикл
asyncio.run(main())
📌 Как это работает:
• aiohttp.ClientSession
используется для асинхронных запросов
• asyncio.gather(*tasks)
позволяет выполнять несколько асинхронных задач параллельно, что делает код значительно быстрее, чем если бы мы ждали каждый запрос по очереди
• await response.text()
извлекает тело ответа, а использование await
позволяет не блокировать выполнение программы в ожидании ответа
❗️ Использование асинхронных подходов особенно актуально, когда нужно делать много HTTP-запросов (например, при сборе данных с разных серверов) или выполнять асинхронные операции в реальном времени, например, при веб-скрапинге или мониторинге сервисов.
tags: #python #разработка
❤️ @recura_tech