Sobes.tech
Назад к вопросам
Junior — Middle
87

Каким образом можно задать ограничение времени ожидания ответа при выполнении HTTP-запроса?

Компании, где спрашивали
AvitoAvito

Ответ от нейросети

sobes.tech AI

В Go для задания ограничения времени ожидания ответа HTTP-запроса обычно используют контекст с таймаутом или настраивают таймауты в http.Client.

Пример с использованием контекста:

ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()

req, err := http.NewRequestWithContext(ctx, "GET", "https://example.com", nil)
if err != nil {
    // обработка ошибки
}

client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
    // ошибка, например, таймаут
}
// обработка resp

Также можно задать таймауты в http.Client:

client := &http.Client{
    Timeout: 5 * time.Second, // общий таймаут на весь запрос
}
resp, err := client.Get("https://example.com")

Таким образом, если сервер не ответит за указанное время, запрос прервётся с ошибкой таймаута.