Обработка ошибок и повторные попытки

A. Обзор

Конвейер загрузки и обработки видео разработан для обеспечения надежности и устойчивости. На каждом этапе — от загрузки файла до финального анализа видео — система предусматривает возможные сбои. Обработка ошибок встроена на нескольких уровнях, а автоматические повторные попытки реализуются там, где это уместно. Это гарантирует, что временные ошибки не прерывают пользовательский опыт, а все сбои регистрируются для диагностики.

B. Категории ошибок

1. Ошибки на стороне клиента (HTTP 4xx)

  • 400 Bad Request:

    • Возникает, когда клиент отправляет некорректные данные (например, отсутствуют обязательные поля, такие как video или user_id, или неверный формат файла).

    • Ошибки валидации входных полей (например, неподходящий тип файла или неверный формат временной метки).

  • 401 Unauthorized:

    • Срабатывает, когда токен доступа отсутствует или недействителен.

  • 403 Forbidden:

    • Возвращается, когда у пользователя отсутствуют необходимые разрешения (например, не-администратор пытается создать сеанс от имени другого пользователя).

  • 404 Not Found:

    • Возникает, если запрашиваемый ресурс (например, конкретный сеанс или видеофайл) недоступен.

  • 422 Unprocessable Entity:

    • Используется, когда тип файла верный, но его невозможно обработать (например, повреждение видеофайла, сбои шифрования/дешифрования).

2. Ошибки на стороне сервера (HTTP 5xx)

  • 500 Internal Server Error:

    • Ловит непредвиденные проблемы во время серверной обработки, такие как необработанные исключения в модулях обработки видео.

  • 503 Service Unavailable:

    • Указывает на временную недоступность сервиса, возможно из-за высокой нагрузки или технического обслуживания.

C. Стратегия повторных попыток

1. Механизм автоматических повторных попыток

Для временных ошибок — особенно сетевых проблем или временной перегрузки серверов — система использует стратегию повторных попыток с экспоненциальной задержкой:

  • Триггеры повторных попыток:

    • Тайм-ауты сети, сброс соединения, ошибки HTTP 503 или 500, указывающие на временный сбой.

  • Политика повторных попыток:

    • Клиент (или сама служба обработки) автоматически повторяет неудачную операцию до 3–5 раз.

    • Задержки между попытками увеличиваются экспоненциально (например, 1 секунда, 2 секунды, 4 секунды), чтобы избежать перегрузки серверов.

  • Размыкатель цепи (Circuit Breaker):

    • Если определенная конечная точка постоянно дает сбои сверх максимального числа попыток, система “размыкает” цепь, временно прекращает повторные попытки, регистрирует ошибку и уведомляет систему мониторинга.

2. Ручное вмешательство и запасные варианты

  • Запасные варианты:

    • В случаях, когда видеофайл не удается обработать после всех повторных попыток, система может перейти к выдаче общего сообщения об ошибке (с возможностью вручную повторно инициировать загрузку) и сохранить детали сбоя для поддержки.

  • Обратная связь пользователю:

    • API возвращает четкие сообщения об ошибках и коды ошибок, которые могут использоваться фронтендом для информирования пользователей (например, “Загрузка не удалась из-за проблем с сетью. Пожалуйста, попробуйте снова позже.”).

  • Логирование и оповещения:

    • Все ошибки — включая те, что вызывают повторные попытки — регистрируются с деталями (сообщение об ошибке, временная метка, затронутый ресурс). Эта информация используется для отладки и может инициировать оповещения о критических проблемах.

D. Детали реализации

  • Формат ответа об ошибке: Каждый ответ об ошибке включает JSON-структуру:

  • Сопоставление кодов состояния: Каждая конечная точка в API настроена на возврат специфичных кодов состояния HTTP для ожидаемых сценариев ошибок.

  • Мониторинг и аналитика: Наш сервер непрерывно отслеживает частоту ошибок и попытки повторения, автоматически корректируя пороги и информируя инженерные команды о потенциальных проблемах.

Last updated

Was this helpful?