123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 |
- package luatask
- import (
- qu "qfw/util"
- "time"
- "util"
- )
- //由挂起状态爬虫创建任务
- func CreateTaskByCodePendstate() {
- defer qu.Catch()
- today := time.Now()
- query := map[string]interface{}{
- "state": 5,
- "platform": "golua平台",
- "pendstate": 1,
- "pendtime": map[string]interface{}{
- "$lt": util.GetTime(-30), //爬虫挂起超过30天的,创建任务
- },
- }
- fields := map[string]interface{}{
- "code": 1,
- "channel": 1,
- "site": 1,
- "modifyuser": 1,
- "modifyuserid": 1,
- "event": 1,
- "pendtime": 1,
- }
- list, _ := util.MgoEB.Find("luaconfig", query, nil, fields, false, -1, -1)
- for _, tmp := range *list {
- code := qu.ObjToString(tmp["code"])
- pendtime := qu.Int64All(tmp["pendtime"])
- pendtimeStr := qu.FormatDateByInt64(&pendtime, qu.Date_Short_Layout)
- tquery := map[string]interface{}{
- "s_code": code,
- "i_state": map[string]interface{}{
- "$nin": []int{4, 6},
- },
- }
- task, _ := util.MgoEB.FindOneByField("task", tquery, map[string]interface{}{"s_descript": 1, "i_state": 1})
- q := map[string]interface{}{}
- set := map[string]interface{}{}
- if len(*task) > 0 { //有历史任务
- if state := qu.IntAll((*task)["i_state"]); state >= 3 { //待审核、未通过任务
- continue
- }
- //区分处理中任务是因为:处理中的任务由审核人员核实而来有l_checktime字段(周报统计),做任务的更新操作;待确认、待处理的任务由程序分发,暂时不加l_checktime属性
- descript := qu.ObjToString((*task)["s_descript"])
- q["_id"] = (*task)["_id"]
- set["i_state"] = 1
- set["l_updatetime"] = time.Now().Unix()
- set["i_pendstate"] = 0
- set["s_descript"] = descript + qu.FormatDate(&today, qu.Date_Short_Layout) + "追加描述:------------------------------\n该爬虫已连续挂起超30天(" + pendtimeStr + ")\n"
- } else { //无历史任务
- set["s_descript"] = "该爬虫已连续挂起超30天(" + pendtimeStr + ")\n"
- set["s_platform"] = "golua平台"
- set["s_channel"] = tmp["channel"]
- set["i_event"] = tmp["event"]
- set["s_type"] = "7"
- set["i_times"] = 1
- set["i_num"] = 0
- set["l_comeintime"] = time.Now().Unix()
- set["s_urgency"] = "1"
- set["l_complete"] = util.CompleteTime("1")
- set["s_modify"] = tmp["modifyuser"]
- set["s_modifyid"] = tmp["modifyuserid"]
- set["s_site"] = tmp["site"]
- set["i_state"] = 1
- set["i_pendstate"] = 0
- set["s_code"] = code
- set["s_source"] = "程序"
- set["i_frequencyerrtimes"] = 0
- }
- util.MgoEB.Update("task", q, map[string]interface{}{"$set": set}, true, false)
- util.MgoEB.UpdateById("luaconfig", tmp["_id"], map[string]interface{}{"$set": map[string]interface{}{"pendstate": 0, "pendtime": 0}})
- }
- }
|