Skip to content

Commit

Permalink
优化节点信息
Browse files Browse the repository at this point in the history
  • Loading branch information
wo10378931 committed Oct 11, 2019
1 parent 46d89c8 commit 973251a
Show file tree
Hide file tree
Showing 6 changed files with 38 additions and 25 deletions.
6 changes: 4 additions & 2 deletions backend/model/node.go
Original file line number Diff line number Diff line change
Expand Up @@ -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())
Expand Down
19 changes: 14 additions & 5 deletions backend/model/schedule.go
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand All @@ -47,31 +53,34 @@ 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)
if err != nil {
log.Errorf(err.Error())
continue
}
schedules[i].NodeName = node.Name
schedule.NodeName = node.Name
}

// 获取爬虫名称
spider, err := GetSpider(schedule.SpiderId)
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) {
Expand Down
11 changes: 8 additions & 3 deletions backend/model/spider.go
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand Down Expand Up @@ -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
Expand Down
13 changes: 4 additions & 9 deletions backend/model/task.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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
}
Expand Down
10 changes: 5 additions & 5 deletions backend/routes/node.go
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down Expand Up @@ -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()
Expand Down
4 changes: 3 additions & 1 deletion backend/services/node.go
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,8 @@ func UpdateNodeStatus() {
handleNodeInfo(key, data)
}

// 重新获取list
list, _ = database.RedisClient.HKeys("nodes")
// 重置不在redis的key为offline
model.ResetNodeStatusToOffline(list)
}
Expand Down Expand Up @@ -225,7 +227,7 @@ func InitNodeService() error {
}

// 首次更新节点数据(注册到Redis)
UpdateNodeData()
// UpdateNodeData()

// 获取当前节点
node, err := model.GetCurrentNode()
Expand Down

0 comments on commit 973251a

Please sign in to comment.