170 похожих чатов

Всем привет func main() { if err :=

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 }
то сервис моментально падает и докерконтенйер моментально гасится ?

Что я делаю не так?

6 ответов

8 просмотров

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")

Slava-Pinchuk Автор вопроса
gudron
listenAndServer в горутину запихни, а завершение п...

а скажите, пожалуйста зачем её ложить в горутину? Я пока не вкурил причину данного подхода...

ну отладка же есть ))) почему "падает"?

Slava-Pinchuk Автор вопроса
Alexey Shumkin
ну отладка же есть ))) почему "падает"?

интеграционнеы тесты проходят всё ок, чего падает пок ане разобрался

Slava-Pinchuk Автор вопроса
Alexey Shumkin
ну "падение" в чём заключается-то?

Все норм, оказалось косяки на стороне девопса

Похожие вопросы

Обсуждают сегодня

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
DS
8
Карта сайта