cmd.go 986 B

12345678910111213141516171819202122232425262728293031323334353637
  1. package cmd
  2. import (
  3. "context"
  4. "esproxy/internal/consts"
  5. "esproxy/internal/service"
  6. "github.com/gogf/gf/v2/frame/g"
  7. "github.com/gogf/gf/v2/net/ghttp"
  8. "github.com/gogf/gf/v2/os/gcmd"
  9. "time"
  10. )
  11. var (
  12. Main = gcmd.Command{
  13. Name: "main",
  14. Usage: "main",
  15. Brief: "start esProxy http server",
  16. Func: func(ctx context.Context, parser *gcmd.Parser) (err error) {
  17. s := g.Server()
  18. s.Use(service.Middleware)
  19. s.BindHandler("/*", func(r *ghttp.Request) {
  20. queryLevel, now := r.GetCtxVar(consts.QueryLevelKey).Int(), time.Now()
  21. rp, err := service.EsProxyManager.GetProxy(r.Context(), queryLevel)
  22. r.SetCtxVar(consts.QueryWaitPoolTime, time.Now().Sub(now).Seconds()) //记录等待时长
  23. if err != nil {
  24. r.Response.Status = 500
  25. g.Log().Errorf(r.Context(), "GetProxy Error:%v", err)
  26. return
  27. }
  28. defer service.EsProxyManager.Release(r.Context(), queryLevel)
  29. rp.ServeHTTP(r.Response.Writer, r.Request)
  30. })
  31. s.Run()
  32. return nil
  33. },
  34. }
  35. )