首页 > 其他分享 >gin-优雅退出

gin-优雅退出

时间:2022-10-25 18:13:21浏览次数:26  
标签:http err syscall 优雅 kill func 退出 gin

package main

import (
	"context"
	"log"
	"net/http"
	"os"
	"os/signal"
	"syscall"
	"time"

	"github.com/gin-gonic/gin"
)

func main() {
	router := gin.Default()
	router.GET("/", func(c *gin.Context) {
		time.Sleep(5 * time.Second)
		c.String(http.StatusOK, "Welcome Gin Server")
	})

	srv := &http.Server{
		Addr:    ":8080",
		Handler: router,
	}

	go func() {
		// service connections
		if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed {
			log.Fatalf("listen: %s\n", err)
		}
	}()

	// Wait for interrupt signal to gracefully shutdown the server with
	// a timeout of 5 seconds.
	quit := make(chan os.Signal)
	// kill (no param) default send syscanll.SIGTERM
	// kill -2 is syscall.SIGINT
	// kill -9 is syscall. SIGKILL but can"t be catch, so don't need add it
	signal.Notify(quit, syscall.SIGINT, syscall.SIGTERM)
	<-quit
	log.Println("Shutdown Server ...")

	ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
	defer cancel()
	if err := srv.Shutdown(ctx); err != nil {
		log.Fatal("Server Shutdown:", err)
	}
	// catching ctx.Done(). timeout of 5 seconds.
	select {
	case <-ctx.Done():
		log.Println("timeout of 5 seconds.")
	}
	log.Println("Server exiting")
}

  

标签:http,err,syscall,优雅,kill,func,退出,gin
From: https://www.cnblogs.com/wlike/p/16825811.html

相关文章

  • vue中使用[email protected],分页器pagination不显示
     在网上搜索里一通发现这个博主写的有用:原文地址:在vue项目使用swiper@6,解决分页器pagination不显示,导航navigation点击不跳转问题-阿piu~ต-博客园(cnblogs.com)问......
  • (转)CentOS出现 login incorrect 输入密码无法登录?(绝对解决问题)
    CentOS出现localhostlogin输入密码无法登录?一、问题描述当大家第一次登录Centos时,出现这种情况有三种原因。  原因1:用户名错误,如果你设置了账户,你们账号就是你设......
  • gin-中间件实现
    1.无中间件启动#使用r:=gin.New()#替代//默认启动方式,包含Logger、Recovery中间件r:=gin.Default()2.中间件启动funcmain(){//创建一个不包含......
  • Nginx03 虚拟主机
    1虚拟主机虚拟主机使用特殊的软硬件技术,把一台运行在因特网上的服务器主机分成一台台“虚拟”的主机,每一台虚拟主机都具有独立的域名,具有完整的Internet服务器(WWW、F......
  • Nginx02 Nginx的的目录结构、基本工作原理、基本配置文件介绍
    1 Nginx目录结构1.1简要介绍 [root@localhost~]#tree/usr/local/nginx/usr/local/nginx├──client_body_temp#POST大文件暂存目录├......
  • gin-表单验证
    功能:1.对登录和注册表单进行验证2.对表单返回的错误进行中文翻译3.对表单返回的数据进行处理,大小写处理和切割packagemainimport( "fmt" "net/h......
  • Nginx简介和安装
    1简介Nginx(enginex)是一个高性能的HTTP和反向代理web服务器,同时也提供了IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄......
  • Webpack中的plugin插件机制
    大家有没有遇到过这些问题:webpack打包之后的文件没有压缩静态文件要手动拷贝到输出目录代码中写了很多环境判断的多余代码上一篇「webpack核心特性」loader说到......
  • Gin-JSON,ProtoBuf渲染
    1.输出json和protobuf新建user.proto文件 syntax="proto3";optiongo_package=".;proto";messageTeacher{stringname=1;repeatedstringcour......
  • CF838B Diverging Directions
    题目链接:​​传送门​​分析一下他给的这个图就知道一个祖先到它的儿子只有生成树的边可以走而一个儿子走到祖先有两种方法一个是先直接到1,再从1走到那个祖先还有一个很......