浏览代码

修改爬虫下架时心跳控制

maxiaoshan 3 年之前
父节点
当前提交
adaa026c9e
共有 2 个文件被更改,包括 11 次插入13 次删除
  1. 8 0
      src/spider/handler.go
  2. 3 13
      src/spider/spider.go

+ 8 - 0
src/spider/handler.go

@@ -385,6 +385,13 @@ func UpdateSpiderByCodeState(code, state string) (bool, error) {
 	up := false
 	var err error
 	if state != "5" && state != "-1" { //脚本下架
+		SpiderHeart.Delete(code) //脚本下架,删除脚本对应心跳
+		Mgo.Update("spider_heart", map[string]interface{}{"code", code}, map[string]interface{}{
+			"$set": map[string]interface{}{
+				"del":        true,
+				"updatetime": time.Now().Unix(),
+			},
+		}, false, false)
 		if util.Config.Working == 1 {
 			for i, as := range []sync.Map{Allspiders, Allspiders2} {
 				if i == 1 && util.Config.Modal == 0 { //队列模式原始模式采集Allspiders2无用(7700下架爬虫)
@@ -1178,6 +1185,7 @@ func SaveHeartInfo() {
 				"modifyuser":    heart.ModifyUser,
 				"event":         util.Config.Uploadevent,
 				"updatetime":    time.Now().Unix(),
+				"del":           false,
 			}})
 			UpdataHeartCache <- update
 		}

+ 3 - 13
src/spider/spider.go

@@ -165,17 +165,8 @@ func (s *Spider) ExecJob(reload bool) {
 		logger.Error(s.Code, err)
 	}
 	if util.Config.IsHistoryEvent && s.GetVar("spiderType") == "history" { //判断爬虫是增量还是历史爬虫(目前只会在7000节点上有历史爬虫)
-		for _, as := range []sync.Map{Allspiders, Allspiders2} { //爬虫在该节点下架
-			if tmp, ok := as.Load(s.Code); ok {
-				sp, ok := tmp.(*Spider)
-				if ok {
-					sp.Stop = true
-					sp.L.Close()
-					as.Delete(s.Code)
-				}
-			}
-		}
-		SpiderCodeSendToEditor(s.Code)
+		UpdateSpiderByCodeState(s.Code, "6") //爬虫在该节点下架
+		SpiderCodeSendToEditor(s.Code)       //发送编辑器
 		return
 	} else {
 		if util.Config.Working == 0 { //高性能模式
@@ -189,8 +180,7 @@ func (s *Spider) ExecJob(reload bool) {
 			*/
 			//if s.IsMustDownload { //历史数据下载,只跑一轮
 			if s.IsHistoricalMend && util.Config.IsHistoryEvent { //历史节点7000,高性能模式,历史补漏只下载一轮
-				s.Stop = true
-				s.L.Close()
+				UpdateSpiderByCodeState(s.Code, "6") //爬虫在该节点下架
 				b := mgu.Update("luaconfig", "editor", "editor", map[string]interface{}{"code": s.Code}, map[string]interface{}{"$set": map[string]interface{}{"state": 6}}, false, false)
 				logger.Info("Delete History Code:", s.Code, b)
 			} else {