Выбор ответа Middle net/http и middleware обновлено
http.Server.Shutdown
Вопрос
Что делает srv.Shutdown(ctx)?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Перестаёт принимать, закрывает простаивающие и ждёт активные до ctx. Shutdown прекращает приём, затем периодически закрывает ставшие простаивающими соединения и ждёт.
Варианты ответа
- Перестаёт принимать, закрывает простаивающие и ждёт активные до ctxправильный ответ
- Немедленно рвёт все соединения, включая запросы в обработке
- Ждёт активные запросы бесконечно, дедлайн ctx не учитывается
- Отправляет всем клиентам ответ 503 и только после этого закрывает соединения
Разбор
Shutdown прекращает приём, затем периодически закрывает ставшие простаивающими соединения и ждёт. Если ctx истёк раньше, возвращает его ошибку, а оставшиеся соединения можно добить srv.Close(). ListenAndServe сразу возвращает http.ErrServerClosed. Немедленный разрыв это Close. Никаких 503 Shutdown не шлёт. Долгоживущие соединения (WebSocket после Hijack) Shutdown не отслеживает, для них есть RegisterOnShutdown.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Термины по теме
Ещё по теме «net/http и middleware»
- Статистика access-логов: ошибки и p95 на Go
- Разбор сырого HTTP/1.1 запроса на Go
- Разбор query-строки URL с декодированием на Go
- Маршрутизатор с параметрами пути в стиле ServeMux
- Rate limiter на токен-бакете для middleware на Go
- Зачем закрывать resp.Body
- Таймаут http.DefaultClient
- Обработчики net/http и горутины