优化节点信息

This commit is contained in:
陈景阳
2019-10-11 21:57:25 +08:00
parent 46d89c8cce
commit 973251a0fb
6 changed files with 38 additions and 25 deletions

View File

@@ -157,10 +157,12 @@ func GetNodeList(filter interface{}) ([]Node, error) {
}
func GetNode(id bson.ObjectId) (Node, error) {
var node Node
if id.Hex() == "" {
return node, nil
}
s, c := database.GetCol("nodes")
defer s.Close()
var node Node
if err := c.FindId(id).One(&node); err != nil {
if err != mgo.ErrNotFound {
log.Errorf(err.Error())

View File

@@ -38,6 +38,12 @@ func (sch *Schedule) Save() error {
return nil
}
func (sch *Schedule) Delete() error {
s, c := database.GetCol("schedules")
defer s.Close()
return c.RemoveId(sch.Id)
}
func GetScheduleList(filter interface{}) ([]Schedule, error) {
s, c := database.GetCol("schedules")
defer s.Close()
@@ -47,11 +53,12 @@ func GetScheduleList(filter interface{}) ([]Schedule, error) {
return schedules, err
}
for i, schedule := range schedules {
var schs []Schedule
for _, schedule := range schedules {
// 获取节点名称
if schedule.NodeId == bson.ObjectIdHex(constants.ObjectIdNull) {
// 选择所有节点
schedules[i].NodeName = "All Nodes"
schedule.NodeName = "All Nodes"
} else {
// 选择单一节点
node, err := GetNode(schedule.NodeId)
@@ -59,7 +66,7 @@ func GetScheduleList(filter interface{}) ([]Schedule, error) {
log.Errorf(err.Error())
continue
}
schedules[i].NodeName = node.Name
schedule.NodeName = node.Name
}
// 获取爬虫名称
@@ -67,11 +74,13 @@ func GetScheduleList(filter interface{}) ([]Schedule, error) {
if err != nil {
log.Errorf("get spider by id: %s, error: %s", schedule.SpiderId.Hex(), err.Error())
debug.PrintStack()
_ = schedule.Delete()
continue
}
schedules[i].SpiderName = spider.Name
schedule.SpiderName = spider.Name
schs = append(schs, schedule)
}
return schedules, nil
return schs, nil
}
func GetSchedule(id bson.ObjectId) (Schedule, error) {

View File

@@ -98,6 +98,12 @@ func (spider *Spider) GetLastTask() (Task, error) {
return tasks[0], nil
}
func (spider *Spider) Delete() error {
s, c := database.GetCol("spiders")
defer s.Close()
return c.RemoveId(spider.Id)
}
// 爬虫列表
func GetSpiderList(filter interface{}, skip int, limit int) ([]Spider, int, error) {
s, c := database.GetCol("spiders")
@@ -256,15 +262,14 @@ func GetSpiderTypes() ([]*entity.SpiderType, error) {
s, c := database.GetCol("spiders")
defer s.Close()
group := bson.M{
"$group": bson.M{
"_id": "$type",
"_id": "$type",
"count": bson.M{"$sum": 1},
},
}
var types []*entity.SpiderType
if err := c.Pipe([]bson.M{ group}).All(&types); err != nil {
if err := c.Pipe([]bson.M{group}).All(&types); err != nil {
log.Errorf("get spider types error: %s", err.Error())
debug.PrintStack()
return nil, err

View File

@@ -4,7 +4,6 @@ import (
"crawlab/constants"
"crawlab/database"
"github.com/apex/log"
"github.com/globalsign/mgo"
"github.com/globalsign/mgo/bson"
"runtime/debug"
"time"
@@ -118,20 +117,16 @@ func GetTaskList(filter interface{}, skip int, limit int, sortKey string) ([]Tas
for i, task := range tasks {
// 获取爬虫名称
spider, err := task.GetSpider()
if err == mgo.ErrNotFound {
// do nothing
} else if err != nil {
return tasks, err
if spider.Id.Hex() == "" || err != nil {
_ = spider.Delete()
} else {
tasks[i].SpiderName = spider.DisplayName
}
// 获取节点名称
node, err := task.GetNode()
if err == mgo.ErrNotFound {
// do nothing
} else if err != nil {
return tasks, err
if node.Id.Hex() == "" || err != nil {
_ = task.Delete()
} else {
tasks[i].NodeName = node.Name
}

View File

@@ -15,9 +15,9 @@ func GetNodeList(c *gin.Context) {
return
}
for i, node := range nodes {
nodes[i].IsMaster = services.IsMasterNode(node.Id.Hex())
}
//for i, node := range nodes {
// nodes[i].IsMaster = services.IsMasterNode(node.Id.Hex())
//}
c.JSON(http.StatusOK, Response{
Status: "ok",
@@ -109,11 +109,11 @@ func GetSystemInfo(c *gin.Context) {
})
}
func DeleteNode(c *gin.Context) {
func DeleteNode(c *gin.Context) {
id := c.Param("id")
node, err := model.GetNode(bson.ObjectIdHex(id))
if err != nil {
HandleError(http.StatusInternalServerError, c ,err)
HandleError(http.StatusInternalServerError, c, err)
return
}
err = node.Delete()

View File

@@ -88,6 +88,8 @@ func UpdateNodeStatus() {
handleNodeInfo(key, data)
}
// 重新获取list
list, _ = database.RedisClient.HKeys("nodes")
// 重置不在redis的key为offline
model.ResetNodeStatusToOffline(list)
}
@@ -225,7 +227,7 @@ func InitNodeService() error {
}
// 首次更新节点数据注册到Redis
UpdateNodeData()
// UpdateNodeData()
// 获取当前节点
node, err := model.GetCurrentNode()