Gin 笔记(06)— 设置不同启动模式、优雅启动和关闭、运行多个不同端口的服务进程

这篇具有很好参考价值的文章主要介绍了Gin 笔记(06)— 设置不同启动模式、优雅启动和关闭、运行多个不同端口的服务进程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 设置不同的启动模式

SetMode()这个函数来设置运行的模式,有三种模式可以设置,分别为

  • gin.ReleaseMode
  • gin.TestMode
  • gin.DebugMode

正式发布时应该设置为发布模式。

func NoResponse(c *gin.Context) {
	// 返回 404 状态码
	c.String(http.StatusNotFound, "404, page not exists!")
}


func main() {
	// 正式发布模式
	gin.SetMode(gin.ReleaseMode)
	router := gin.Default()

	// 设定请求 url 不存在的返回值
	router.NoRoute(NoResponse)
	router.Run(":8080")
}

运行结果:

$ go run main.go 
[GIN] 2022/07/14 - 15:11:23 | 404 |       8.683µs |       127.0.0.1 | GET      "/v2/login"

2. 优雅的关闭和启动

我们可以使用 fvbock/endless 来替换默认的 ListenAndServe. 可以参考 #296 有更多的细节。

router := gin.Default()
router.GET("/", handler)
// [...]
endless.ListenAndServe(":4242", router)

其它可选的方案

  • manners: A polite Go HTTP server that shuts down gracefully.
  • graceful: Graceful is a Go package enabling graceful shutdown of an http.Handler server.
  • grace: Graceful restart & zero downtime deploy for Go servers.

3. 运行多个不同端口的服务进程

参考 question ,使用下面代码尝试实现:文章来源地址https://www.toymoban.com/news/detail-457182.html

package main

import (
	"log"
	"net/http"
	"time"

	"github.com/gin-gonic/gin"
	"golang.org/x/sync/errgroup"
)

var (
	g errgroup.Group
)

func router01() http.Handler {
	e := gin.New()
	e.Use(gin.Recovery())
	e.GET("/", func(c *gin.Context) {
		c.JSON(
			http.StatusOK,
			gin.H{
				"code":  http.StatusOK,
				"message": "Welcome server 01",
			},
		)
	})

	return e
}

func router02() http.Handler {
	e := gin.New()
	e.Use(gin.Recovery())
	e.GET("/", func(c *gin.Context) {
		c.JSON(
			http.StatusOK,
			gin.H{
				"code":  http.StatusOK,
				"message": "Welcome server 02",
			},
		)
	})

	return e
}

func main() {
	server01 := &http.Server{
		Addr:         ":8080",
		Handler:      router01(),
		ReadTimeout:  5 * time.Second,
		WriteTimeout: 10 * time.Second,
	}

	server02 := &http.Server{
		Addr:         ":8081",
		Handler:      router02(),
		ReadTimeout:  5 * time.Second,
		WriteTimeout: 10 * time.Second,
	}

	g.Go(func() error {
		return server01.ListenAndServe()
	})

	g.Go(func() error {
		return server02.ListenAndServe()
	})

	if err := g.Wait(); err != nil {
		log.Fatal(err)
	}
}

到了这里,关于Gin 笔记(06)— 设置不同启动模式、优雅启动和关闭、运行多个不同端口的服务进程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 16.5.3 【Linux】SELinux 三种模式的启动、关闭与观察

    并非所有的 Linux distributions 都支持 SELinux 的,所以你必须要先观察一下你的系统版本为何。 目前 SELinux 依据启动与否,共有三种模式,分别如下: enforcing:强制模式,代表 SELinux 运行中,且已经正确的开始限制 domain/type 了; permissive:宽容模式:代表 SELinux 运行中,不过仅

    2024年02月12日
    浏览(27)
  • supervisorctl(-jar)启动配置设置NACOS不同命名空间

    由于需要在上海服务器上面配置B测试环境,原本上面已有A测试环境,固需要将两套权限系统分开 可以使用不同的命名空间来隔离启动服务 注:本文章均不涉及公司机密 命名空间默认会有一个public,并且不能删除,此时我们新增一个名为hzces的命名空间 此处选择hzces的命名空

    2024年02月11日
    浏览(27)
  • Ubuntu下通过.sh文件同时启动多个程序系列2—启动多个终端分别运行不同指令或者程序

    项目上经常遇到需要到开多个终端分别启动不用程序,这里简单介绍一个方法,通过.sh文件,同时启动多个程序 这里创建的文件名为 test.sh chmod 777 test.sh ./test.sh gnome-terminal --tab --title=A.sh – bash -c “ cd /home/aha/Downloads/test1 ./run.sh run.log ;exec bash” 只需要修改加粗部分即可 例如

    2024年02月06日
    浏览(47)
  • WPF实战学习笔记06-设置待办事项界面

    创建待办待办事项集合并初始化 TodoViewModel: 创建绑定右侧命令、变量 设置界面

    2024年02月15日
    浏览(31)
  • C语言学习笔记 VScode设置C环境-06

    目录 一、下载vscode软件  二、安装minGW软件  三、VS Code安装C/C++插件 3.1 搜索并安装C/C++插件  3.2 配置C/C++环境 总结 在官网上下载最新的版本 Download Visual Studio Code - Mac, Linux, Windows https://code.visualstudio.com/download   注意: 1.在安装过程不要有中文、特殊字符这些,还有其他盘符

    2024年02月15日
    浏览(37)
  • VMware设置静态ip地址及不同网络模式讲解【Linux网络问题】

    此处的静态IP配置选用的是使用NAT方式连接网络【如果之前配置有错误,可以尝试暴力方法:将虚拟机网络配置重新恢复为默认,然后从头开始配置】 1.查看VMware给Linux虚拟机分配的ip所在网段: (1)右键点击VMware中的【编辑】菜单栏,打开【虚拟网络编辑器】,然后选中【

    2024年02月01日
    浏览(43)
  • 三、MySQL实例初始化、设置、服务启动关闭、环境变量配置、客户端登入(一篇足以从白走到黑)

    目录 1、选择安装的电脑类型、设置端口号 2、选择mysql账号密码加密规则 3、设置root账户密码 4、设置mysql服务名和服务启动策略 5、执行设置(初始化mysql实例) 6、完成设置  7、MySQL数据库服务的启动和停止 方式一:图形化方式 方式二:命令行方式 8、MySQL数据库环境变量的

    2024年01月18日
    浏览(45)
  • User电脑中睡眠和休眠的区别,及对不同环境下模式设置建议

    睡眠模式(Sleep): 特点: 电脑进入睡眠模式时,系统的状态会保存在RAM中,电脑的大部分组件都会被关闭,但RAM仍然得到电源供应以保持数据。这使得电脑能够快速唤醒,因为数据保持在内存中。 建议使用环境: 短暂休息: 适合在较短的休息时间内返回计算机,因为唤醒

    2024年01月19日
    浏览(40)
  • 惠普电脑/笔记本电脑为什么左下角会出现 按 ESC 进入启动选项,怎么关闭

    惠普电脑/笔记本电脑为什么左下角会出现 按 ESC 进入启动选项,怎么关闭 查看: 现象提示图片示例: ![v 出现原因 出现这个提示,说明你关闭了 『安全启动』,开启了 『传统模式』 解决方法 首先确定你的硬盘分区是 『MBR 』还是 『GPT』,如果你的『引导盘/系统盘分区』

    2024年02月10日
    浏览(130)
  • 【Unity3D】Android 打包 ② ( Android 编译选项 | Android 工程设置 | 配置基本信息 | 配置不同分辨率图标 | 配置启动动画 | 其它设置 )

    在上一篇博客 【Unity3D】Android 打包 ① ( Android 编译选项 | 安装 Android Build Support 模块 ) 中 讲解了 Android 打包的最基本配置 , 安装 Android Build Support 模块 ; 本篇博客继续讲解后续工作 ; 在 Unity 编辑器中选择 \\\" 菜单栏 | File | Build Settings \\\" 选项 , 点击 Build Settings 对话框的左下角的

    2023年04月19日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包