# gwf **Repository Path**: aveyuan/gwf ## Basic Information - **Project Name**: gwf - **Description**: 优雅地启动,关闭,到重启的 `Golang Web` 实现。支持 Gin,GF,Echo,Chi等框架。基于 `http.Server` 统一管理,现在开始 Fly - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-06-04 - **Last Updated**: 2025-06-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README

GWF (Go Web Fly)

优雅地启动,关闭,到重启的 `Golang Web` 实现。支持 Gin,GF,Echo,Chi等框架。基于 `http.Server` 统一管理,现在开始 Fly ## GWF 特点 - 能够平滑地关闭 `http.Server` - 能够平滑地重启 `http.Server` - 适配多个 `Golang Web` 框架 - 优雅的服务管理最佳实践 - 支持 `logger` 日志接口写入 - `server` 的定义取决你自己的配置 - 支持 `http` 关闭之后,通过 `func` 进行资源的关闭,例如 `db` 连接释放,减少4次握手的时间 ## 快速开始 >你可以看到 `cmd/gin` 的例子,直接使用 ```go package main import ( "net/http" "os" "github.com/aveyuan/gwf" "github.com/gin-gonic/gin" "github.com/go-kratos/kratos/v2/log" ) func main() { logger := log.NewHelper(log.NewStdLogger(os.Stdout)) var restartChan = make(chan struct{}) var closeFunc = func() { logger.Info("关闭资源1") logger.Info("关闭资源2") } logger.Error() r := gin.Default() r.GET("/", func(c *gin.Context) { c.JSON(200, gin.H{ "message": "pong", }) }) r.GET("/restart", func(c *gin.Context) { restartChan <- struct{}{} c.JSON(200, gin.H{ "message": "pong", }) }) server := gwf.NewHttpServer(&http.Server{ Addr: ":8081", Handler: r, }, gwf.WithCloseFunc(closeFunc), gwf.WithLogger(logger), gwf.WithRestartChan(restartChan)) server.Start() } ```