zoukankan      html  css  js  c++  java
  • 利用 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

  • 相关阅读:
    SQL中利用脚本恢复数据库
    SQL中如何检查死锁
    三个有用的SQL辅助工具
    企业报销系统完整设计方案(三)
    企业报销系统完整设计方案(二)
    企业报销系统完整设计方案
    Crystal Report在.net中的两种显示方式
    cacti 流量图合并
    Centos 7 配置邮件发送
    Centos 7 Ntop 流量分析 安装
  • 原文地址:https://www.cnblogs.com/zhucheer/p/12341595.html
Copyright © 2011-2022 走看看