Выбор ответа Middle net/http и middleware спрашивают часто обновлено
Таймаут http.DefaultClient
Вопрос
Какой таймаут у http.Get(url) (то есть http.DefaultClient)?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Никакого: зависший сервер подвесит горутину. DefaultClient это &http.Client{} с нулевым Timeout, то есть без ограничения общего времени.
Варианты ответа
- 30 секунд на весь запрос
- 60 секунд, как у curl
- Никакого: зависший сервер подвесит горутинуправильный ответ
- Равен WriteTimeout на стороне сервера
Разбор
DefaultClient это &http.Client{} с нулевым Timeout, то есть без ограничения общего времени. У DefaultTransport есть таймауты на установку соединения (30 с) и TLS handshake (10 с), но не на ожидание ответа и чтение тела. Поэтому в сервисах создают свой клиент с Timeout или передают контекст с дедлайном. Серверные таймауты к клиенту отношения не имеют.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Термины по теме
Ещё по теме «net/http и middleware»
- Статистика access-логов: ошибки и p95 на Go
- Разбор сырого HTTP/1.1 запроса на Go
- Разбор query-строки URL с декодированием на Go
- Маршрутизатор с параметрами пути в стиле ServeMux
- Rate limiter на токен-бакете для middleware на Go
- http.HandlerFunc
- Надёжный HTTP-клиент в Go
- HTTP-сервис на стандартной библиотеке