gin-无缝重启 - Go语言中文社区

gin-无缝重启


1 .无缝重启

    go func(){
        if err:=s.ListenAndServe();err!=nil&&err!=http.ErrServerClosed{
            fmt.Println("关机了")
            log.Fatalf("listen: %sn",err)

        }
    }()

    quit:=make(chan os.Signal)
    signal.Notify(quit,os.Interrupt)
    <-quit
    fmt.Println("关闭服务端")
    
    ctx,cancel:=context.WithTimeout(context.Background(),5*time.Second)
    defer cancel()
    if err:=s.Shutdown(ctx);err!=nil{
        fmt.Println("关闭服务器",err)
    }
    fmt.Println("关闭退出")

2 .自定义http服务器配置

s:=&http.Server{
        Addr:":8080",
        Handler:r,
        ReadTimeout:5*time.Second,
        WriteTimeout:10*time.Second,
        MaxHeaderBytes:1<<20,
    }

Ctrl+C

1 .在终端执行某些特定组合键可以使系统发送特定的信号给此进程,完成一系列动作
2 .信号使一种操作系统进程间通讯的以中国有限制的方式
3 .是一种异步的通知机制,用来提醒进程一个事件已经发生。
4 .当一个信号发送给一个进程,操作系统中断了进程正常的控制流程,此时任何非原子操作都将被打断。
5 .如果进程定义了信号处理函数,那么就会执行,否则就执行默认处理函数

目的

1 .不关闭现有连接,正在运行中的程序
2 .新的进程启动并替代旧的进程
3 .新的进程接管新的连接
4 .连接要随时响应用户的请求,当用户仍在请求旧进程时要保持连接,新用户因该请求新进程
5 不能出现请求被拒绝的时候

版权声明:本文来源简书,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://www.jianshu.com/p/4917ad0d934e
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-01-12 12:04:38
  • 阅读 ( 2126 )
  • 分类:Go Web框架

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢