zhangqian
2024-02-29 eef08ad808cc0529ed66aeec53b227045f3312c7
服务优雅退出
1个文件已修改
21 ■■■■■ 已修改文件
main.go 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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")
}