新增 TakeBusinessFields、WriteBusinessFields、SetByPath 与 GetByPath 等工具,支持按映射路径写入请求体与解析响应,并更新相关依赖。
71 lines
2.1 KiB
Go
71 lines
2.1 KiB
Go
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, "服务正在关闭...")
|
||
}
|