优雅关闭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
- 上一篇:JS中遍历对象属性的四种方法
- 下一篇:XSS攻击和CSRF请求伪造