taskinfo.go 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package info
  2. import (
  3. "cluster"
  4. "config"
  5. "fmt"
  6. "gopkg.in/mgo.v2/bson"
  7. "qfw/util"
  8. "qfw/util/mongodb"
  9. "time"
  10. )
  11. func QueryInfo() map[string]interface{} {
  12. now := time.Now()
  13. data := make(map[string]interface{})
  14. //config.Sys.Lock()
  15. //data["isrun"] = config.IsRun
  16. //config.Sys.Unlock()
  17. taskArr := mongodb.Find("ocr_task", bson.M{"isrun":bson.M{
  18. "$ne":"stop",
  19. }}, `{_id:1}`, nil, false, -1, -1)
  20. taskNum := len(*taskArr)
  21. if taskNum == 0 {
  22. return data
  23. }
  24. data["taskNum"] = taskNum
  25. sumNum := 0
  26. nowSumNum := 0
  27. var stime time.Time
  28. resultInfos := make([]map[string]interface{}, 0)
  29. for i, v := range *taskArr {
  30. sid := bson.ObjectIdHex(util.ObjToString(v["start"]))
  31. eid := bson.ObjectIdHex(util.ObjToString(v[util.ObjToString(config.EidField)]))
  32. tmpSumNum := mongodb.Count("bidding", bson.M{"_id": bson.M{
  33. "$gte": sid,
  34. "$lte": eid,
  35. }})
  36. v["sub"] = tmpSumNum
  37. v["i_time"] = time.Unix(util.Int64All(v["import_time"]),0).String()
  38. resultInfos = append(resultInfos, v)
  39. sumNum += tmpSumNum
  40. if i == 0 {
  41. nowSumNum = sumNum
  42. tmptime := util.Int64All(v["import_time"])
  43. stime = time.Unix(tmptime,0)
  44. }
  45. }
  46. data["sumNum"] = sumNum
  47. data["nowSumNum"] = nowSumNum
  48. tmpsid := bson.ObjectIdHex(util.ObjToString((*taskArr)[0]["start"]))
  49. over := (*taskArr)[0][util.ObjToString(config.SidField)]
  50. overNum := mongodb.Count("bidding", bson.M{"_id": bson.M{
  51. "$gte": tmpsid,
  52. "$lt": bson.ObjectIdHex(util.ObjToString(over)),
  53. }})
  54. data["overNum"] = overNum
  55. undoneNum := sumNum - overNum
  56. data["undoneNum"] = undoneNum
  57. nowUnDoneNum := nowSumNum - overNum
  58. data["nowUnDoneNum"] = nowUnDoneNum
  59. since := time.Since(stime)
  60. data["executionTime"] = since.String()
  61. //log.Println(now.Sub(stime).Seconds())
  62. cluster.DescribeInstances()
  63. cnum:=0
  64. cluster.CID.Range(func(key, value interface{}) bool {
  65. cnum+=1
  66. return true
  67. })
  68. mtmm := float64(overNum) / now.Sub(stime).Seconds() / float64(3+cnum)
  69. //log.Println(overNum ,now.Sub(stime).Seconds(),3+len(config.CID),mtmm)
  70. tmpf := float64(nowSumNum) / mtmm / float64(3+cnum)
  71. //log.Println(nowSumNum,mtmm,tmpf)
  72. data["estimatedFinishTime"] = now.Add(time.Second*time.Duration(tmpf)).String()
  73. data["esc"] = fmt.Sprint(3 ,"+", cnum)
  74. data["resultInfos"] = resultInfos
  75. //log.Println(resultInfos)
  76. return data
  77. }