Переглянути джерело

新增定时任务统计异常附件和定时迁移列表页数据

maxiaoshan 3 роки тому
батько
коміт
654116d902
6 змінених файлів з 126 додано та 6 видалено
  1. 1 0
      src/config.json
  2. 14 0
      src/logs/task.log
  3. 1 0
      src/main.go
  4. 7 6
      src/timetask/filewarn.go
  5. 101 0
      src/timetask/listdatamove.go
  6. 2 0
      src/util/config.go

+ 1 - 0
src/config.json

@@ -92,6 +92,7 @@
 	"randomdatapushcron": "0 50 8 ? * MON-FRI",
 	"qyworkremindcron": "0 0 9 ? * MON-FRI",
 	"filewarncron": "0 55 8 ? * *",
+	"movelistdata": "0 0 0 ? * *",
 	"closenum": 2,
 	"daynum": 6,
 	"mail": {

+ 14 - 0
src/logs/task.log

@@ -626984,3 +626984,17 @@
 2022/05/11 13:50:45 filewarn.go:76: debug  15900
 2022/05/11 13:50:45 filewarn.go:76: debug  16000
 2022/05/11 13:50:47 filewarn.go:102: debug  异常附件数据统计完成...
+2022/05/23 11:15:42 filewarn.go:18: debug  异常附件数据统计...
+2022/05/23 11:15:47 filewarn.go:18: debug  异常附件数据统计...
+2022/05/23 11:16:28 filewarn.go:18: debug  异常附件数据统计...
+2022/05/23 11:16:29 filewarn.go:18: debug  异常附件数据统计...
+2022/05/23 11:16:49 filewarn.go:18: debug  异常附件数据统计...
+2022/05/24 18:07:00 listdatamove.go:13: debug  开始迁移spider_highlistdata数据...
+2022/05/24 18:07:00 listdatamove.go:28: debug  spider_highlistdata迁移数据量: 1
+2022/05/24 18:07:00 listdatamove.go:48: debug  0
+2022/05/24 18:07:00 listdatamove.go:61: debug  spider_highlistdata删除数据量: 1
+2022/05/24 18:07:00 listdatamove.go:63: debug  开始迁移spider_listdata数据...
+2022/05/24 18:07:00 listdatamove.go:66: debug  spider_listdata迁移数据量: 0
+2022/05/24 18:07:00 listdatamove.go:86: debug  1
+2022/05/24 18:07:00 listdatamove.go:99: debug  spider_listdata删除数据量: 1
+2022/05/24 18:07:00 listdatamove.go:100: debug  数据迁移完成...

+ 1 - 0
src/main.go

@@ -43,6 +43,7 @@ func main() {
 	c.AddFunc(util.RandomDataPushCron, timetask.GetSpiderWarnData) //数据维护平台-爬虫数据维护数据数据统计
 	c.AddFunc(util.QyworkRemindCron, timetask.SendInfoToWxWork)    //企业微信日常警告
 	c.AddFunc(util.FileWarnCron, timetask.GetFileWarn)             //异常附件数据警告
+	c.AddFunc(util.MoveListDataCron, timetask.MoveListData)        //列表页数据迁移
 	//编辑器任务
 	c.AddFunc(util.ResetDataStateCron, luatask.ResetDataState) //重置数据
 	c.AddFunc(util.StartTaskCron, luatask.StartTask)           //开始任务

+ 7 - 6
src/timetask/filewarn.go

@@ -2,30 +2,31 @@ package timetask
 
 import (
 	"bytes"
-	"github.com/donnie4w/go-logger/logger"
-	"github.com/tealeg/xlsx"
 	qu "qfw/util"
 	gm "qfw/util/mail"
 	"sync"
 	"time"
 	"util"
+
+	"github.com/donnie4w/go-logger/logger"
+	"github.com/tealeg/xlsx"
 )
 
 //下载异常附件统计
 func GetFileWarn() {
 	defer qu.Catch()
-	qu.Debug("异常附件数据统计...")
-	file, err := xlsx.OpenFile("res/附件采集监控模板.xlsx")
-	sheet := file.Sheets[0]
+	logger.Debug("异常附件数据统计...")
+	file, err := xlsx.OpenFile("res/model.xlsx")
 	if err != nil {
 		qu.Debug("open file err:", err)
 		return
 	}
+	sheet := file.Sheets[0]
 	sess := util.MgoS.GetMgoConn()
 	defer util.MgoS.DestoryMongoConn(sess)
 	query := map[string]interface{}{
 		"comeintime": map[string]interface{}{
-			"$gte": 0,
+			"$gte": util.GetTime(-1),
 			"$lt":  util.GetTime(0),
 		},
 	}

+ 101 - 0
src/timetask/listdatamove.go

@@ -0,0 +1,101 @@
+package timetask
+
+import (
+	"github.com/donnie4w/go-logger/logger"
+	qu "qfw/util"
+	"sync"
+	"time"
+	"util"
+)
+
+//列表页历史数据迁移
+func MoveListData() {
+	logger.Debug("开始迁移spider_highlistdata数据...")
+	//1、spider_highlistdata数据迁移,只保留一个月
+	defer qu.Catch()
+	sess := util.MgoS.GetMgoConn()
+	defer util.MgoS.DestoryMongoConn(sess)
+	query := map[string]interface{}{
+		"comeintime": map[string]interface{}{
+			"$lt": time.Now().Unix() - 30*86400,
+		},
+	}
+	lock := &sync.Mutex{}
+	wg := &sync.WaitGroup{}
+	ch := make(chan bool, 3)
+	arr := []map[string]interface{}{}
+	count, _ := sess.DB(util.MgoS.DbName).C("spider_highlistdata").Find(&query).Count()
+	logger.Debug("spider_highlistdata迁移数据量:", count)
+	it := sess.DB(util.MgoS.DbName).C("spider_highlistdata").Find(&query).Iter()
+	n := 0
+	for tmp := make(map[string]interface{}); it.Next(&tmp); n++ {
+		wg.Add(1)
+		ch <- true
+		go func(tmp map[string]interface{}) {
+			defer func() {
+				<-ch
+				wg.Done()
+			}()
+			lock.Lock()
+			arr = append(arr, tmp)
+			if len(arr) > 500 {
+				util.MgoS.SaveBulk("spider_highlistdata_back", arr...)
+				arr = []map[string]interface{}{}
+			}
+			lock.Unlock()
+		}(tmp)
+		if n%1000 == 0 {
+			logger.Debug(n)
+		}
+		tmp = map[string]interface{}{}
+	}
+	wg.Wait()
+	lock.Lock()
+	if len(arr) > 0 {
+		util.MgoS.SaveBulk("spider_highlistdata_back", arr...)
+		arr = []map[string]interface{}{}
+	}
+	lock.Unlock()
+	//删除原表中数据
+	delNum := util.MgoS.Delete("spider_highlistdata", query)
+	logger.Debug("spider_highlistdata删除数据量:", delNum)
+
+	logger.Debug("开始迁移spider_listdata数据...")
+	//1、spider_listdata数据迁移,只保留一个月
+	count, _ = sess.DB(util.MgoS.DbName).C("spider_listdata").Find(&query).Count()
+	logger.Debug("spider_listdata迁移数据量:", count)
+	it1 := sess.DB(util.MgoS.DbName).C("spider_listdata").Find(&query).Iter()
+	n1 := 0
+	for tmp := make(map[string]interface{}); it1.Next(&tmp); n1++ {
+		wg.Add(1)
+		ch <- true
+		go func(tmp map[string]interface{}) {
+			defer func() {
+				<-ch
+				wg.Done()
+			}()
+			lock.Lock()
+			arr = append(arr, tmp)
+			if len(arr) > 500 {
+				util.MgoS.SaveBulk("spider_listdata_back", arr...)
+				arr = []map[string]interface{}{}
+			}
+			lock.Unlock()
+		}(tmp)
+		if n1%1000 == 0 {
+			logger.Debug(n1)
+		}
+		tmp = map[string]interface{}{}
+	}
+	wg.Wait()
+	lock.Lock()
+	if len(arr) > 0 {
+		util.MgoS.SaveBulk("spider_listdata_back", arr...)
+		arr = []map[string]interface{}{}
+	}
+	lock.Unlock()
+	//删除原表中数据
+	delNum = util.MgoS.Delete("spider_listdata", query)
+	logger.Debug("spider_listdata删除数据量:", delNum)
+	logger.Debug("数据迁移完成...")
+}

+ 2 - 0
src/util/config.go

@@ -21,6 +21,7 @@ var (
 	CodeSummaryCron    string        //每天统计爬虫信息
 	ResetDataStateCron string        //重置数据状态
 	FileWarnCron       string        //每天统计附件异常数据
+	MoveListDataCron   string        //迁移spider_highlistdata、spider_listdata数据
 	CloseNum           int           //关闭几天的任务
 	DayNum             int           //更新数据天数
 	CodeEventModel     map[int]int   //节点对应的采集模式0:老模式;1:新模式
@@ -62,6 +63,7 @@ func InitOther() {
 	RandomDataPushCron = qu.ObjToString(Config["randomdatapushcron"])
 	QyworkRemindCron = qu.ObjToString(Config["qyworkremindcron"])
 	FileWarnCron = qu.ObjToString(Config["filewarncron"])
+	MoveListDataCron = qu.ObjToString(Config["movelistdata"])
 	CloseNum = qu.IntAll(Config["closenum"])
 	DayNum = qu.IntAll(Config["daynum"])
 	MsgServers := Config["msgservers"].(map[string]interface{})