码迷,mamicode.com
首页 > Web开发 > 详细

优雅关闭web服务的方式

时间:2019-12-20 01:07:30      阅读:153      评论:0      收藏:0      [点我收藏+]

标签:ali   elm   port   case   har   val   为知笔记   def   reg   

优雅关闭web服务

DBHelper, err = gorm.Open("mysql", "root:root@(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:root@(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()
}




优雅关闭web服务的方式

标签:ali   elm   port   case   har   val   为知笔记   def   reg   

原文地址:https://www.cnblogs.com/hualou/p/12071042.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!