From eef08ad808cc0529ed66aeec53b227045f3312c7 Mon Sep 17 00:00:00 2001 From: zhangqian <zhangqian@123.com> Date: 星期四, 29 二月 2024 14:34:35 +0800 Subject: [PATCH] 服务优雅退出 --- main.go | 21 ++++++++++++--------- 1 files changed, 12 insertions(+), 9 deletions(-) diff --git a/main.go b/main.go index 12cb94a..b195719 100644 --- a/main.go +++ b/main.go @@ -1,11 +1,11 @@ package main import ( + "context" "net/http" "os" "os/signal" "silkserver/conf" - "silkserver/constvar" "silkserver/models" "silkserver/pkg/logx" "silkserver/router" @@ -29,8 +29,6 @@ logx.Errorf("db init error! ", err.Error()) return } - - go shutdown() logx.Infof("server start serve...") server := &http.Server{ Addr: ":" + conf.WebConf.Port, @@ -38,16 +36,21 @@ ReadTimeout: 5 * time.Second, WriteTimeout: 5 * time.Second, } - + go shutdown(server) logx.Error(server.ListenAndServe().Error()) } -func shutdown() { +func shutdown(server *http.Server) { quit := make(chan os.Signal, 1) signal.Notify(quit, syscall.SIGKILL, syscall.SIGQUIT, syscall.SIGINT, syscall.SIGTERM) <-quit - - _ = constvar.GrpcClient.Close() - logx.Infof("server exited...") - os.Exit(0) + // 鍒涘缓涓�涓笂涓嬫枃锛岃缃秴鏃舵椂闂� + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + logx.Infof("server exiting...") + if err := server.Shutdown(ctx); err != nil { + logx.Warnf("鏈嶅姟浼橀泤閫�鍑哄け璐�: %v", err) + return + } + logx.Infof("server exited success") } -- Gitblit v1.8.0