Files
model-gateway/main.go
T
19904408334 76c55fbb73 feat: 新增业务字段路径读写工具
新增 TakeBusinessFields、WriteBusinessFields、SetByPath 与 GetByPath 等工具,支持按映射路径写入请求体与解析响应,并更新相关依赖。
2026-08-18 10:11:09 +08:00

71 lines
2.1 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"
"model-gateway/consts/public"
"model-gateway/service"
"model-gateway/service/utils"
"os"
"os/signal"
"syscall"
"time"
"model-gateway/controller"
"gitea.redpowerfuture.com/red-future/common/http"
"gitea.redpowerfuture.com/red-future/common/jaeger"
_ "gitea.redpowerfuture.com/red-future/common/swagger"
gmq "github.com/bjang03/gmq/core/gmq"
"github.com/bjang03/gmq/mq"
_ "github.com/gogf/gf/contrib/drivers/pgsql/v2"
_ "github.com/gogf/gf/contrib/nosql/redis/v2"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gtimer"
)
func main() {
ctx := context.Background()
defer jaeger.ShutDown(ctx)
// 初始化全局协程池(最大 goroutine 数,从配置文件读取,默认 100)
workerNum := g.Cfg().MustGet(ctx, "pool.workerNum", utils.DefaultWorkerNum).Int()
utils.Init(workerNum)
g.Log().Infof(ctx, "[main] 全局协程池已初始化, workerNum=%d", workerNum)
// 注册路由
http.RouteRegister([]interface{}{
controller.ModelCall,
controller.ModelManage,
controller.ModelGatewayModels,
controller.ModelGatewayTask,
controller.ModelGatewayLogsStat,
})
gmq.GmqRegister(public.GmqMsgPluginsName, &mq.NatsConn{
NatsConfig: mq.NatsConfig{
Addr: g.Config().MustGet(ctx, "nats.addr").String(),
Port: g.Config().MustGet(ctx, "nats.port").String(),
Username: g.Config().MustGet(ctx, "nats.username").String(),
Password: g.Config().MustGet(ctx, "nats.password").String(),
},
})
gtimer.AddSingleton(ctx, 10*time.Second, func(ctx context.Context) {
err := service.ModelTaskEndService.GetTaskStartList(ctx)
if err != nil {
g.Log().Error(ctx, "模型视频任务处理失败 err: %v", err)
}
})
// 监听退出信号,确保 Ctrl+C 能完整退出(停止 worker/cleaner 并关闭 gateway server
quit := make(chan os.Signal, 1)
signal.Notify(quit, os.Interrupt, syscall.SIGTERM)
<-quit
utils.Shutdown()
g.Log().Infof(ctx, "[main] 全局协程池已关闭")
// 收到退出信号后,关闭全局协程池,等待所有已提交的任务执行完成
g.Log().Info(ctx, "服务正在关闭...")
}