zhangqian
2024-02-29 eef08ad808cc0529ed66aeec53b227045f3312c7
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")
}