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}}) } }