run(); err != nil {
log.Fatalf("run(). Error: '%v'\n", err)
}
}
func run() error {
router := mux.NewRouter().StrictSlash(true)
router.HandleFunc("/api/v1/authorization", handlers.Authorization).Methods(http.MethodPost)
logger.DebugInfo("Server listening on http://0.0.0.0:8082/")
if err := http.ListenAndServe("0.0.0.0:8082", router); err != nil {
return err
}
return nil
}
Почему ка ктолько в методе Authorization есть if{ return }
то сервис моментально падает и докерконтенйер моментально гасится ?
Что я делаю не так?
listenAndServer в горутину запихни, а завершение программы жди из канала os.Signal s := &http.Server{ Addr: fmt.Sprintf(":%d", cfg.Bind), Handler: r, ErrorLog: zap.NewStdLog(zap.L()), ReadHeaderTimeout: time.Duration(cfg.ReadHeadersTimeout) * time.Millisecond, ReadTimeout: time.Duration(cfg.ReadTimeout) * time.Millisecond, WriteTimeout: time.Duration(cfg.HandlerTimeout+50) * time.Millisecond, } l.Info("starting http service") go func() { err := s.ListenAndServe() if err != nil { l.Fatal(err.Error()) } }() c := make(chan os.Signal) signal.Notify(c, syscall.SIGINT, syscall.SIGTERM) <-c l.Warn("stopping http service") ctx, cancel := context.WithCancel(context.Background()) go func() { <-c cancel() }() if err = s.Shutdown(ctx); err != nil { l.Fatal(err.Error()) } l.Warn("stopped")
а скажите, пожалуйста зачем её ложить в горутину? Я пока не вкурил причину данного подхода...
ну отладка же есть ))) почему "падает"?
интеграционнеы тесты проходят всё ок, чего падает пок ане разобрался
ну "падение" в чём заключается-то?
Все норм, оказалось косяки на стороне девопса
Обсуждают сегодня