利用 Orange 框架快速构建一个具有优雅退出功能的 HTTP服务

上一篇我们介绍了 Golang 程序优雅退出的相关细节和使用总结:https://www.cnblogs.com/zhucheer/p/12337277.html

今天我们来使用一个 Web 框架快速构建一个带优雅退出功能的 go 程序。

第一步:

在 GOPATH 目录下创建一个目录 demo(可随意),并在目录中创建一个 main.go,并写入代码:

package main

import (
"gitee.com/zhucheer/orange/app"
"fmt"
"time"
)

func main(){
router := &Route{}
app.AppStart(router)
}

type Route struct {
}

func (s *Route) ServeMux() {
app.NewRouter("").GET("/", func(ctx *app.Context) error {
// 通过该方法添加处理逻辑, 进程退出后会等待 ExitWaitFunDo 中的逻辑处理完成后再退出;
app.ExitWaitFunDo(func() {
// run something
time.Sleep(5*time.Second)
fmt.Println("Shutdown gracefully")
})
return ctx.ToString("Hello world!")
})

}

第二步:我们通过 go mod 将相关依赖进行安装;

我们首先根据自己的 go 版本配置环境变量和国内代理;

go 版本小于 1.13

window 下在 cmd 中执行:
set GO111MODULE=on
set  GOPROXY=https://goproxy.cn

linux  下执行:
export GO111MODULE=on
export GOPROXY=https://goproxy.cn

go 版本大于等于 1.13

go env -w GOPROXY=https://goproxy.cn,direct

然后在当前项目目录下面执行命令:

go mod init // 初始化go mod 包管理
go mod tidy // 加载依赖包
go mod vendor // 将依赖包拷贝到项目目录中去
go run main.go

 

不出意外,程序就启动了,如下图:

我们可以尝试访问 http://127.0.0.1:8088,我们代码中有个逻辑是等待 5s 后打印"Shutdown gracefully",可以在刷新浏览器页面后立刻 Ctrl+C 让程序退出,我们可以在控制台中清楚的看到,程序是等待打印 "Shutdown gracefully" 后再退出程序的。

 

利用 Orange 框架可以方便的构建一个能优雅退出的 http 服务,建议大家尝试;

其中还包含了各类封装好的 Web 开发组件,感兴趣的同学可以试试:

代码:https://gitee.com/zhucheer/orange

文档:https://www.kancloud.cn/chase688/orange_framework/1448035

posted @ 2020-02-21 15:37  qīqíqǐqì  阅读(218)  评论(0编辑  收藏