Files
model-asynch/main.go
2026-04-23 13:53:09 +08:00

56 lines
1.5 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package main
import (
"context"
"os"
"os/signal"
"syscall"
"model-asynch/controller"
"model-asynch/service"
_ "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.Task,
})
// 启动后台任务worker + 清理器
if g.Cfg().MustGet(ctx, "asynch.worker.enabled", true).Bool() {
service.AsyncWorker.Start(ctx) // 启动 worker 协程池
} else {
g.Log().Warningf(ctx, "[main] asynch.worker.enabled=false跳过启动 worker")
}
if g.Cfg().MustGet(ctx, "asynch.cleaner.enabled", true).Bool() {
service.Cleaner.Start(ctx) // 启动清理器
} else {
g.Log().Warningf(ctx, "[main] asynch.cleaner.enabled=false跳过启动 cleaner")
}
// 监听退出信号,确保 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()
// 停止 worker关闭协程池
service.AsyncWorker.Stop(ctx)
// 关闭 http serverRouteRegister 内部是 go Httpserver.Run() 启动的)
_ = http.Httpserver.Shutdown()
}