Асинхронные HTTP-запросы в Python с aiohttp и asyncio

Практические лайфхаки для разработчиков, DevOps и админов: Docker, Linux, Bash, Python, Golang, Ansible, логи и безопасность — только рабочие решения. Даем готовые команды, конфиги и приёмы диагностики, которые экономят часы и дни. Если нужно быстро настроить, отладить и обезопасить инфраструктуру — вы по адресу.

pythonaiohttpasyncio

👁 При работе с несколькими 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

Тёмная обложка с фрагментом кода Python (aiohttp, asyncio) и логотипом RECURA — иллюстрация асинхронных HTTP-запросов.
Пример кода для асинхронных запросов на aiohttp и asyncio

Читайте так же