othertask.go 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. package luatask
  2. import (
  3. qu "qfw/util"
  4. "time"
  5. "util"
  6. )
  7. //由挂起状态爬虫创建任务
  8. func CreateTaskByCodePendstate() {
  9. defer qu.Catch()
  10. today := time.Now()
  11. query := map[string]interface{}{
  12. "state": 5,
  13. "platform": "golua平台",
  14. "pendstate": 1,
  15. "pendtime": map[string]interface{}{
  16. "$lt": util.GetTime(-30), //爬虫挂起超过30天的,创建任务
  17. },
  18. }
  19. fields := map[string]interface{}{
  20. "code": 1,
  21. "channel": 1,
  22. "site": 1,
  23. "modifyuser": 1,
  24. "modifyuserid": 1,
  25. "event": 1,
  26. "pendtime": 1,
  27. }
  28. list, _ := util.MgoEB.Find("luaconfig", query, nil, fields, false, -1, -1)
  29. for _, tmp := range *list {
  30. code := qu.ObjToString(tmp["code"])
  31. pendtime := qu.Int64All(tmp["pendtime"])
  32. pendtimeStr := qu.FormatDateByInt64(&pendtime, qu.Date_Short_Layout)
  33. tquery := map[string]interface{}{
  34. "s_code": code,
  35. "i_state": map[string]interface{}{
  36. "$nin": []int{4, 6},
  37. },
  38. }
  39. task, _ := util.MgoEB.FindOneByField("task", tquery, map[string]interface{}{"s_descript": 1, "i_state": 1})
  40. q := map[string]interface{}{}
  41. set := map[string]interface{}{}
  42. if len(*task) > 0 { //有历史任务
  43. if state := qu.IntAll((*task)["i_state"]); state >= 3 { //待审核、未通过任务
  44. continue
  45. }
  46. //区分处理中任务是因为:处理中的任务由审核人员核实而来有l_checktime字段(周报统计),做任务的更新操作;待确认、待处理的任务由程序分发,暂时不加l_checktime属性
  47. descript := qu.ObjToString((*task)["s_descript"])
  48. q["_id"] = (*task)["_id"]
  49. set["i_state"] = 1
  50. set["l_updatetime"] = time.Now().Unix()
  51. set["i_pendstate"] = 0
  52. set["s_descript"] = descript + qu.FormatDate(&today, qu.Date_Short_Layout) + "追加描述:------------------------------\n该爬虫已连续挂起超30天(" + pendtimeStr + ")\n"
  53. } else { //无历史任务
  54. set["s_descript"] = "该爬虫已连续挂起超30天(" + pendtimeStr + ")\n"
  55. set["s_platform"] = "golua平台"
  56. set["s_channel"] = tmp["channel"]
  57. set["i_event"] = tmp["event"]
  58. set["s_type"] = "7"
  59. set["i_times"] = 1
  60. set["i_num"] = 0
  61. set["l_comeintime"] = time.Now().Unix()
  62. set["s_urgency"] = "1"
  63. set["l_complete"] = util.CompleteTime("1")
  64. set["s_modify"] = tmp["modifyuser"]
  65. set["s_modifyid"] = tmp["modifyuserid"]
  66. set["s_site"] = tmp["site"]
  67. set["i_state"] = 1
  68. set["i_pendstate"] = 0
  69. set["s_code"] = code
  70. set["s_source"] = "程序"
  71. set["i_frequencyerrtimes"] = 0
  72. }
  73. util.MgoEB.Update("task", q, map[string]interface{}{"$set": set}, true, false)
  74. util.MgoEB.UpdateById("luaconfig", tmp["_id"], map[string]interface{}{"$set": map[string]interface{}{"pendstate": 0, "pendtime": 0}})
  75. }
  76. }