fix 定时任务参数错误的问题

This commit is contained in:
陈景阳
2019-10-16 15:27:12 +08:00
parent ecab6dfa03
commit 05136b0fac
4 changed files with 61 additions and 23 deletions

View File

@@ -4,6 +4,7 @@ import (
"crawlab/constants"
"crawlab/database"
"crawlab/services/register"
"errors"
"github.com/apex/log"
"github.com/globalsign/mgo"
"github.com/globalsign/mgo/bson"
@@ -158,16 +159,19 @@ func GetNodeList(filter interface{}) ([]Node, error) {
func GetNode(id bson.ObjectId) (Node, error) {
var node Node
if id.Hex() == "" {
return node, nil
log.Infof("id is empty")
debug.PrintStack()
return node, errors.New("id is empty")
}
s, c := database.GetCol("nodes")
defer s.Close()
if err := c.FindId(id).One(&node); err != nil {
if err != mgo.ErrNotFound {
log.Errorf(err.Error())
debug.PrintStack()
}
log.Errorf(err.Error())
debug.PrintStack()
return node, err
}
return node, nil

View File

@@ -45,6 +45,27 @@ func (sch *Schedule) Delete() error {
return c.RemoveId(sch.Id)
}
func (sch *Schedule) SyncNodeIdAndSpiderId(node Node, spider Spider) {
sch.syncNodeId(node)
sch.syncSpiderId(spider)
}
func (sch *Schedule) syncNodeId(node Node) {
if node.Id.Hex() == sch.NodeId.Hex() {
return
}
sch.NodeId = node.Id
_ = sch.Save()
}
func (sch *Schedule) syncSpiderId(spider Spider) {
if spider.Id.Hex() == sch.SpiderId.Hex() {
return
}
sch.SpiderId = spider.Id
_ = sch.Save()
}
func GetScheduleList(filter interface{}) ([]Schedule, error) {
s, c := database.GetCol("schedules")
defer s.Close()
@@ -103,13 +124,11 @@ func UpdateSchedule(id bson.ObjectId, item Schedule) error {
if err := c.FindId(id).One(&result); err != nil {
return err
}
node, err := GetNode(item.NodeId)
if err != nil {
log.Errorf("get node error: %s", err.Error())
debug.PrintStack()
return nil
return err
}
item.NodeKey = node.Key
if err := item.Save(); err != nil {
return err
@@ -123,9 +142,7 @@ func AddSchedule(item Schedule) error {
node, err := GetNode(item.NodeId)
if err != nil {
log.Errorf("get node error: %s", err.Error())
debug.PrintStack()
return nil
return err
}
item.Id = bson.NewObjectId()