Григорий IT://home: post #1250 — TG.ME

⚡️Aiohttp: ускоряем работу с API в Python

Представь ситуацию: ты разрабатываешь бэкенд веб-платформу, которой необходимо регулярно делать по 10 запросов в 10 разных API

- При обычном использовании requests мы отправляем первый запрос, ждём ответа, потом второй, потом третий и так далее...

- А можно сделать так: пока один API обрабатывает наш запрос, программа может переключиться на работу с другими запросами

Вот для таких задач и существует aiohttp

aiohttp - это библиотека для асинхронной работы с HTTP в Python, с её помощью можно как отправлять HTTP-запросы, так и поднимать свой web-сервер


Главная фишка тут именно в асинхронности

Допустим, у нас есть несколько адресов:

import asyncio
import aiohttp


async def get_site(session, url):
async with session.get(url) as response:
print(url, response.status)


async def main():
urls = [
"https://python.org",
"https://github.com",
"https://google.com"
]

async with aiohttp.ClientSession() as session:
await asyncio.gather(
*[get_site(session, url) for url in urls]
)


asyncio.run(main())


Что здесь происходит? 👇

1. Мы создаём одну клиентскую сессию (ClientSession)
2. Делаем сразу несколько запросов через asyncio.gather() - функцию, которая запускает несколько асинхронных операций вместе и ждёт, пока они завершатся
3. И не ждём, пока каждый запрос полностью закончится перед запуском следующего
4. Пока мы ждём ответ от одного сайта, Python может переключиться на обработку другого запроса

В этих задачах aiohttp будет особенно полезен:

- работа с большим количеством API
- парсеры и сбор данных
- микросервисы
- Telegram-боты
- любые задачи, где программа много ждёт сеть

Чем это лучше обычной библиотеки requests?

1. Если нужно сделать один-два запроса, то requests может подойти:

requests.get(url)


2. Но если запросов сотни, код на requests много времени просто ждёт ответа от API, а с aiohttp это время ожидания можно использовать для выполнения других запросов

Важно: aiohttp не делает сам HTTP-запрос быстрее, выигрыш появляется за счёт того, что во время ожидания выполнения одного запроса программа может заниматься другими


Подводя итог, можно сказать следующее:

requests - простая и удобная библиотека для обычных запросов и небольших скриптов

aiohttp - библиотека помощнее, которая нужна в ситуациях, когда начинается серьёзная асинхронная работа с сетью

А какие асинхронные библиотеки вы использовали в своих проектах?
5🙂9⚡2💯2
August 11, 2026 75