当前位置:首页 > Web开发 > 正文

优雅关闭web服务的方式

2024-03-31 Web开发

标签:

优雅关闭web服务

DBHelper, err = gorm.Open("mysql", "root:[email protected](115.159.59.129:3306)/test?charset=utf8&parseTime=True&loc=Local") if err != nil { log.Fatal("数据库初始化错误", err) //log.Fatal输出日志并且退出主程序 return }

优雅的关闭server part 1初始化退出信号

package src import ( "context" "log" "os" "os/signal" "time" ) var ServerSigChan chan os.Signal var ctx context.Context func init() { ServerSigChan = make(chan os.Signal) ctx, _ = context.WithTimeout(context.Background(), 10*time.Second) go ServerNotify(ctx) } func ServerNotify(ctx context.Context) { signal.Notify(ServerSigChan) select { case <-ServerSigChan: ServerSigChan <- os.Interrupt case <-ctx.Done(): //这里等待的时间可以用来在关闭连接的时候释放资源 ServerSigChan <- os.Interrupt } } func ShutDownServer(err error) { log.Println(err) ServerSigChan <- os.Interrupt log.Println("数据库优雅退出") os.Exit(1) }

part2 初始化数据库连接

package src import ( "github.com/jinzhu/gorm" "time" ) var DBHelper *gorm.DB var err error func InitDB() { DBHelper, err = gorm.Open("mysql", "root:[email protected](115.159.59.129:3306)/test?charset=utf8&parseTime=True&loc=Local") if err != nil { ShutDownServer(err) //关闭连接 } DBHelper.SingularTable(true) DBHelper.DB().SetMaxIdleConns(10) DBHelper.DB().SetMaxOpenConns(100) DBHelper.DB().SetConnMaxLifetime(time.Hour) }

启动项目

func main(){ router := gin.Default() go InitDB() //协程初始化数据库连接 if v, ok := binding.Validator.Engine().(*validator.Validate); ok { v.RegisterValidation("topicurl", TopicUrl) } v1 := router.Group("/v2/mtopics") { v2.DELETE("/mtopics", DelMTopic) } router.Run() }



来自为知笔记(Wiz)



优雅关闭web服务的方式

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/39951.html