Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

Документы

Медиа

Назад
Вопрос про Python: async, asyncio, aiohttp, error handling

Как организовать асинхронные запросы к нескольким внешним сервисам? (asyncio, обработка ошибок)

Вопрос проверяет знание асинхронного программирования в Python, работу с asyncio и обработку ошибок при параллельных запросах.

Короткий ответ

Асинхронные запросы можно организовать с помощью библиотеки aiohttp и модуля asyncio. Запросы выполняются параллельно, что ускоряет работу. Ошибки обрабатываются через try-except или asyncio.gather с параметром return_exceptions=True.

Длинный ответ

Асинхронные запросы позволяют выполнять несколько операций ввода-вывода без блокировки потока.

Основные шаги:

  1. Использование aiohttp

    • Библиотека для асинхронных HTTP-запросов.

    • Работает внутри async-функций.

  2. Параллельное выполнение запросов

    • asyncio.gather() запускает несколько корутин одновременно.

  3. Обработка ошибок

    • Можно перехватывать исключения внутри корутин.

    • Или использовать return_exceptions=True в gather().

Пример:

import aiohttp
import asyncio

async def fetch_data(url):
    try:
        async with aiohttp.ClientSession() as session:
            async with session.get(url) as response:
                return await response.json()
    except Exception as e:
        print(f"Ошибка при запросе к {url}: {e}")
        return None

async def main():
    urls = ["https://api1.com", "https://api2.com"]
    results = await asyncio.gather(*[fetch_data(url) for url in urls], return_exceptions=True)
    print(results)

asyncio.run(main())

Когда использовать:

  • Когда нужно выполнить много запросов к API без ожидания ответа.

  • Для ускорения работы с медленными внешними сервисами.

Уровень

  • Рейтинг:

    2

  • Сложность:

    5

Навыки

  • Python

    Python

  • aiohttp

Ключевые слова

#async

#asyncio

#aiohttp

#error handling

Подпишись на Python Developer в телеграм