package cmd import ( "context" "esproxy/internal/consts" "esproxy/internal/service" "github.com/gogf/gf/v2/frame/g" "github.com/gogf/gf/v2/net/ghttp" "github.com/gogf/gf/v2/os/gcmd" "time" ) var ( Main = gcmd.Command{ Name: "main", Usage: "main", Brief: "start esProxy http server", Func: func(ctx context.Context, parser *gcmd.Parser) (err error) { s := g.Server() s.Use(service.Middleware) s.BindHandler("/*", func(r *ghttp.Request) { queryLevel, now := r.GetCtxVar(consts.QueryLevelKey).Int(), time.Now() rp, err := service.EsProxyManager.GetProxy(r.Context(), queryLevel) r.SetCtxVar(consts.QueryWaitPoolTime, time.Now().Sub(now).Seconds()) //记录等待时长 if err != nil { r.Response.Status = 500 g.Log().Errorf(r.Context(), "GetProxy Error:%v", err) return } defer service.EsProxyManager.Release(r.Context(), queryLevel) rp.ServeHTTP(r.Response.Writer, r.Request) }) s.Run() return nil }, } )