Это асинхронный ад
Библиотека для асинхронных HTTP-запросов, написанная для мазохистов, которые считают, что requests — это слишком просто. Если requests — это велосипед, то aiohttp — это велосипед с квадратными колёсами, который едет только в гору.
Зачем это нужно?
— Чтобы делать 100500 запросов одновременно (и получить 100500 ошибок одновременно).
— Чтобы гордо сказать: «Я пишу на асинхронном коде!» (а потом три дня дебажить RuntimeError: Event loop is closed).
— Чтобы понять, что asyncio — это не библиотека, а образ жизни (и боли).
Когда использовать?
✅ Если вам действительно нужно 10к RPS (но ваш сервер сдохнет на 500).
✅ Если вы любите разбираться в async/await (и ненавидите свою жизнь).
✅ Если requests кажется вам слишком стабильным и предсказуемым.
Когда НЕ использовать?
❌ Если вы думаете, что асинхронность — это «просто добавить async перед функцией».
❌ Если ваш код уже работает (и вам незачем его ломать).
❌ Если у вас аллергия на ошибки типа «aiohttp.client_exceptions.ServerDisconnectedError».
Пример кода (который сломается при первом же запуске)
Что может пойти не так?
🔹 Сервер не отвечает? Получай TimeoutError и сиди гадай, то ли сервер сдох, то ли DNS сломался.
🔹 Сессия закрылась раньше времени? Наслаждайся ClientSession is closed.
🔹 Слишком много запросов? Добро пожаловать в мир aiohttp.client_exceptions.TooManyRedirects.
🔹 SSL-сертификат кривой? Привет, aiohttp.client_exceptions.ClientConnectorCertificateError.
Вывод
aiohttp — это мощно, быстро и… очень больно. Если requests — это «пострелял из пистолета», то aiohttp — это «запустил ракету с заднего двора и надеешься, что она не упадёт тебе на голову».
Совет: Прежде чем лезть в aiohttp, выучи asyncio настолько, чтобы объяснить его пьяному другу в 3 часа ночи. Иначе будет очень грустно.
Хочешь разбор реальных кейсов? Залетай в канал, там мы пилим всяких ботов...