Вступить в клуб →
средняявопросHTTP-клиенты, серверы и gRPC

Паника в фоновой отправке письма роняет весь HTTP-сервис

func (h *Handler) CreateOrder(w http.ResponseWriter, r *http.Request) {
    order := h.orders.Create(r.Context(), parse(r))
    go h.mailer.SendConfirmation(order) // внутри иногда паника на nil
    writeJSON(w, order)
}

Middleware с recover стоит на всём роутере. Паника в хендлере раньше приводила только к ответу 500, а паника в SendConfirmation завершает весь процесс. Почему?

  • recover работает только в той же горутине, где паника
  • Middleware с recover не применяется к хендлерам с go
  • Паника в фоне всегда фатальна, в хендлере — нет
  • SendConfirmation выполняется после завершения ответа

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела