mirror of
https://github.com/crawlab-team/crawlab.git
synced 2026-01-25 17:42:25 +01:00
fix 如果从dir读取爬虫为空,则移除所有的爬虫
This commit is contained in:
@@ -177,6 +177,24 @@ func RemoveSpider(id bson.ObjectId) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func RemoveAllSpider() error {
|
||||
s, c := database.GetCol("spiders")
|
||||
defer s.Close()
|
||||
|
||||
spiders := []Spider{}
|
||||
err := c.Find(nil).All(&spiders)
|
||||
if err != nil {
|
||||
log.Error("get all spiders error:" + err.Error())
|
||||
return err
|
||||
}
|
||||
for _, spider := range spiders {
|
||||
if err := RemoveSpider(spider.Id); err != nil {
|
||||
log.Error("remove spider error:" + err.Error())
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func GetSpiderCount() (int, error) {
|
||||
s, c := database.GetCol("spiders")
|
||||
defer s.Close()
|
||||
|
||||
@@ -89,16 +89,25 @@ func GetSpidersFromDir() ([]model.Spider, error) {
|
||||
|
||||
// 将爬虫保存到数据库
|
||||
func SaveSpiders(spiders []model.Spider) error {
|
||||
// 遍历爬虫列表
|
||||
s, c := database.GetCol("spiders")
|
||||
defer s.Close()
|
||||
|
||||
if len(spiders) == 0 {
|
||||
err := model.RemoveAllSpider()
|
||||
if err != nil {
|
||||
log.Error("remove all spider error:" + err.Error())
|
||||
return err
|
||||
}
|
||||
log.Info("get spider from dir is empty,removed all spider")
|
||||
return nil
|
||||
}
|
||||
// 如果该爬虫不存在于数据库,则保存爬虫到数据库
|
||||
for _, spider := range spiders {
|
||||
// 忽略非自定义爬虫
|
||||
if spider.Type != constants.Customized {
|
||||
continue
|
||||
}
|
||||
|
||||
// 如果该爬虫不存在于数据库,则保存爬虫到数据库
|
||||
s, c := database.GetCol("spiders")
|
||||
defer s.Close()
|
||||
var spider_ *model.Spider
|
||||
if err := c.Find(bson.M{"src": spider.Src}).One(&spider_); err != nil {
|
||||
// 不存在
|
||||
@@ -106,11 +115,8 @@ func SaveSpiders(spiders []model.Spider) error {
|
||||
debug.PrintStack()
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
// 存在
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user