HTTP-клиенты Go: ошибки, повторы и общий таймаут — задачи

Задачи Go на HTTP-клиенты: отказ зависимости, повторы, request_id и общий бюджет времени.

Состав подборки: 7 задач на код. Условия и формат проверки указаны на странице каждой задачи.

Разберите маленький пример

Если каждая из трёх попыток получает отдельный таймаут 2 секунды, запрос может ждать значительно дольше двух секунд. Общий deadline ограничивает всю операцию, а попытки расходуют оставшееся время. Потерянный ответ также не доказывает, что сервер не выполнил действие.

На что обратить внимание

  • Различайте сетевую ошибку, HTTP-статус и неполное тело ответа.
  • Для повторяемого действия сохраните один идентификатор операции, если этого требует контракт.
  • Обязательная и необязательная зависимость дают разные правила деградации.
  • Проверяйте отмену контекста и прекращение лишних попыток.

Порядок практики

  1. HTTP-клиент поиска на Go: обработка ответа и ошибок — задача — код.
  2. Go: Обязательная и необязательная зависимость при отказе — задача с проверкой — код.
  3. Go: Один request_id для вызова и выяснения результата — задача с проверкой — код.
  4. Go: Один бюджет времени на попытки — задача с проверкой — код.
  5. Go: Не перегружаем Label при сбое — задача с проверкой — код.
  6. Go: Медленная зависимость и старый клиент — задача с проверкой — код.
  7. Go: Принять только полный ответ о последней статье — задача с проверкой — код.

Куда двигаться дальше

Задачи взяты из открытой части курса; полная работа над сервисами — платный курс микросервисов на Go.

База обработки ошибок Go.

HTTP-клиенты Go: ошибки, повторы и общий таймаут — задачи