Зачем нужны таймауты в HTTP запросах?

Junior
541 просмотров
AFK Offer AI

Без таймаутов HTTP-клиент или сервер может зависнуть навсегда — если сервер не отвечает, соединение утекает, горутина блокируется, ресурсы не освобождаются.

client := &http.Client{
    Timeout: 10 * time.Second,
}

// или через context ctx, cancel := context.WithTimeout(ctx, 10*time.Second) defer cancel() req, _ := http.NewRequestWithContext(ctx, "GET", url, nil)

На сервере тоже нужны таймауты: ReadTimeout, WriteTimeout, IdleTimeout. Без них медленные клиенты (slowloris) могут исчерпать все соединения. Правило: всегда ставь таймауты на обе стороны.

Следующий вопрос

Как спроектировать notification service?