Обработка ошибок и повторные попытки
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?