Как лучше организовать graceful restart для http-сервер на goalng?
Или как вариант, как лучше организовать структуру приложения, что бы в нем был graceful restart?
И конкретнее:
type App struct {
// <<<< здесь сложная структура,
// инициализируется данными из конфига
}
func (app *App) reqHandler(w http.ResponseWriter, r *http.Request) {
// Обработка входящего http-запроса
}
func main() {
app := NewApp() //<<<< здесь загрузка из конфига
r := mux.NewRouter()
// Собственно вопрос: Можно-ли заменить
r.HandleFunc("/", app.reqHandler) // <<<< вот этот
// handler после старта сервера?
srv := http.Server{
Handler: r,
Addr: ":8080",
}
srv.ListenAndServe()
}