首页 > 其他分享 >fiber优雅重启

fiber优雅重启

时间:2024-04-18 12:55:06浏览次数:27  
标签:fiber log upg 重启 tableflip 优雅 version os

网上都是gin框架的优雅重启,这里配置一下fiber

先build一份version = "v0.0.1",再修改一份version = "v0.0.2",用for循环请求接口发现服务不会停止

package main

import (
	"fmt"
	"github.com/cloudflare/tableflip"
	"github.com/gofiber/fiber/v2"
	"log"
	"os"
	"os/signal"
	"syscall"
)

const version = "v0.0.1"

func main() {
	upg, _ := tableflip.New(tableflip.Options{})
	defer upg.Stop()

	// By prefixing PID to log, easy to interrupt from another process.
	log.SetPrefix(fmt.Sprintf("[PID: %d]", os.Getpid()))

	// Listen for the process signal to trigger the tableflip upgrade.
	go func() {
		sig := make(chan os.Signal, 1)
		signal.Notify(sig, syscall.SIGHUP)
		for range sig {
			upg.Upgrade()
		}
	}()

	// Listen must be called before Ready
	ln, _ := upg.Listen("tcp", "localhost:8080")
	defer ln.Close()

	app := fiber.New()
	app.Get("/version", func(c *fiber.Ctx) error {
		log.Println(version)
		return c.SendString(version)
	})

	go app.Listener(ln)

	// tableflip ready
	if err := upg.Ready(); err != nil {
		panic(err)
	}

	<-upg.Exit()
}

标签:fiber,log,upg,重启,tableflip,优雅,version,os
From: https://www.cnblogs.com/qcy-blog/p/18143301

相关文章

  • Laravel Eloquent Paginator 一种优雅的重新修改分页数据的方法
    需求如何将分页器数据内的数据进行处理后再塞回去解决分页器数据是一个Collection,使用transform方法进行处理$paginator=$this->items()->where('position','=',null)->paginate(15);$paginator->getCollection()->transform(function($value){//Yourcodehe......
  • 【python】如何优雅的终止while循环
    1.背景需求python需要与外界或终端交互时,常常需要使用while循环一直跑。如果需要终止程序,一般使用Ctrl+c,此时终端会打印一大堆backtrace,并且无法保留当前运行的状态,非常不优雅。使用KeyboardInterrupt异常捕捉,可以实现优雅的终止while循环。 2.实现方法try:while(Tr......
  • docker使用centos镜像创建的容器内使用systemctl重启sshd服务报错或者无法使用
    问题是这样的:如果镜像是ubuntu系统的,创建容器后使用systemctl启动sshd没有什么问题,但是如果镜像是centos,那就会报错failedtoconnecttobusnosuch原因:centos系统的的安全性较高,相比ubuntu一些底层无法映射到容器中,即使在创建容器时加上--security-optseccomp:unconfined --......
  • windows使用/服务(15)windows Server【开机启动和任务计划程序】实现服务器重启后项目自
    版权声明:本文为博客园博主「yclizq」的原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接及本声明。原文链接:windowsServer【开机启动和任务计划程序】实现服务器重启后项目自启动1.说明有些时候我们希望计算机开机后就启动一些服务或应用程序。2.开机启动使用Win+R......
  • 重启React Native老项目的奇幻之旅:填坑实录与解决方案分享
    这两天为了重启五年前基于ReactNative(版本0.59.9)开发的老项目,经过各种填坑查询等操作,最终把它成功地运行起来了。在这篇文章中,我将详述那些遭遇的挑战以及对应的解决方案,以期为同样面临此类困境的开发者提供宝贵的经验参考。这个项目涉及到的环境基本版本信息如下:react:16.......
  • 【Kubernetes 系列】如何优雅的配置 Java 微服务
    【Kubernetes系列】如何优雅的配置Java微服务 目标创建KubernetesConfigMap和Secret使用MicroProfileConfig注入微服务配置一、实现外部化应用配置在Kubernetes中,为docker容器设置环境变量有几种不同的方式,比如:Dockerfile、kubernetes.yml、Kubernet......
  • IDEA突然提示git is not installed Cannot identify version of git executable:no re
    闲话:早上来打开IDEA编辑器,突然发现Git消失了,下意识点了一下安装git,等了一会发现安装失败!好嘛,大早上的事来了。随后调整了一个上午,最后实在忍不住起来上厕所,烦躁的不行把笔记本关机重启,回来发现居然自己恢复了。现在我把我查询的过程都记录下来,希望能有帮助到......
  • 【Camunda】SpringBoot优雅集成Camunda 7工作流引擎,保姆级教程!
    From: https://mp.weixin.qq.com/s/lZmIucZYzqqwjBCtDAL9WA前言项目中需要用到工作流引擎来设计部分业务流程,框架选型最终选择了Camunda7,关于Camunda以及Activity等其他工作流引擎的介绍及对比不再介绍,这里只介绍与现有Springboot项目的集成以及具体使用及配置概念流程......
  • 重启策略出处文献
      CarlaP.Gomes, BartSelman, NunoCrato:Heavy-Tailed Distributions in Combinatorial Search. CP 1997: 121-135 @inproceedings{DBLP:conf/cp/GomesSC97,author={CarlaP.GomesandBartSelmanand......
  • linux重启进入单用户模式
    1.重启后,选择启动项时,按e去编辑grub引导配置2.修改grub配置linux行,修改ro为rw,console=tty后面,(如果是kvm虚拟机,console=ttyS0关系到该主机能否使用console连接)添加init=/bin/bashrd.break,将后面的参数全部频闭在Linux启动过程中,rd.break是一个特殊的启动参数,用于在init......