package main import ( "context" "os" "os/signal" "syscall" "model-asynch/controller" _ "gitea.com/red-future/common/config" "gitea.com/red-future/common/http" "gitea.com/red-future/common/jaeger" _ "gitea.com/red-future/common/swagger" _ "github.com/gogf/gf/contrib/drivers/pgsql/v2" _ "github.com/gogf/gf/contrib/nosql/redis/v2" "github.com/gogf/gf/v2/frame/g" ) func main() { ctx, cancel := context.WithCancel(context.Background()) defer cancel() defer jaeger.ShutDown(ctx) // 注册路由 http.RouteRegister([]interface{}{ controller.Model, controller.ModelType, controller.Task, controller.Stat, }) // 监听退出信号,确保 Ctrl+C 能完整退出(停止 worker/cleaner 并关闭 http server) quit := make(chan os.Signal, 1) signal.Notify(quit, os.Interrupt, syscall.SIGTERM) <-quit g.Log().Infof(ctx, "[main] 收到退出信号,开始优雅退出...") cancel() // 关闭 http server(RouteRegister 内部是 go Httpserver.Run() 启动的) _ = http.Httpserver.Shutdown() }