Проверяет умение закрывать сервис корректно, без потери запросов.
Используют context и системные сигналы (os.Signal). При SIGTERM вызывается server.Shutdown(ctx), а воркерам передаётся отменённый контекст, чтобы завершить работу.
Graceful shutdown = «корректное завершение»:
Не принимать новые запросы.
Дождаться завершения текущих.
Закрыть фоновые воркеры.
srv := &http.Server{Addr: ":8080", Handler: mux}
go srv.ListenAndServe()
quit := make(chan os.Signal, 1)
signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
<-quit
ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()
srv.Shutdown(ctx) // ждём завершения запросовДля воркеров — передавать ctx и проверять <-ctx.Done().
Вывод: Graceful shutdown обязателен для production-сервисов, чтобы избежать обрезанных запросов и утечек.