Логотип YeaHub

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

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

Тренажёр

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

Обучение

Навыки

Задачи

Войти

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

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

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Python: retry, timeout, fallback

Как обрабатывать ситуацию, когда внешний сервис периодически недоступен или отвечает с ошибками?

Вопрос проверяет умение проектировать устойчивое взаимодействие с нестабильными внешними зависимостями.

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

Нужно считать сбои внешнего сервиса нормальной ситуацией и обрабатывать их явно. Используются таймауты, ограниченные ретраи и circuit breaker. Важно различать временные и фатальные ошибки. Для бизнеса часто применяют fallback или деградацию функциональности. Логирование и метрики обязательны для контроля.

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

Нестабильность внешних сервисов — не исключение, а рабочий сценарий. Архитектура должна быть к этому готова.

Базовый принцип

Сначала важно зафиксировать: внешний сервис всегда может быть недоступен, и это не должно ломать всю систему.

Основные механизмы обработки

  1. Timeout

    • ограничивает время ожидания

    • предотвращает зависание воркеров

  2. Retry

    • только для идемпотентных операций

    • с ограничением количества и задержкой

  3. Circuit breaker

    • временно отключает вызовы при массовых ошибках

    • защищает систему от каскадных отказов

  4. Fallback

    • возврат кешированных или упрощённых данных

    • частичная деградация функциональности

  5. Fail-fast

    • быстрое завершение запроса при явной недоступности

Пример с retry и timeout

async def fetch():
    try:
        return await http_call(timeout=2)
    except TimeoutError:
        return fallback_data()

Ошибки, которые часто допускают

  1. Бесконечные ретраи

  2. Одинаковая логика для всех ошибок

  3. Отсутствие метрик по отказам

  4. Жёсткая зависимость бизнес-логики от внешнего API

Вывод

Корректная обработка недоступных внешних сервисов строится на таймаутах, ограниченных ретраях, деградации и защите от каскадов. Это делает систему предсказуемой под нагрузкой.

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    5

  • Сложность:

    6

Навыки

  • Python

    Python

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

#retry

#timeout

#fallback

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

  • Аватар

    Python Guru

    Sergey Filichkin

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.