Выбор ответа Middle net/http и middleware спрашивают часто обновлено

Таймаут http.DefaultClient

Вопрос

Какой таймаут у http.Get(url) (то есть http.DefaultClient)?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Никакого: зависший сервер подвесит горутину. DefaultClient это &http.Client{} с нулевым Timeout, то есть без ограничения общего времени.

Варианты ответа

  1. 30 секунд на весь запрос
  2. 60 секунд, как у curl
  3. Никакого: зависший сервер подвесит горутинуправильный ответ
  4. Равен WriteTimeout на стороне сервера

Разбор

DefaultClient это &http.Client{} с нулевым Timeout, то есть без ограничения общего времени. У DefaultTransport есть таймауты на установку соединения (30 с) и TLS handshake (10 с), но не на ожидание ответа и чтение тела. Поэтому в сервисах создают свой клиент с Timeout или передают контекст с дедлайном. Серверные таймауты к клиенту отношения не имеют.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.

Термины по теме