mirror of
https://github.com/crawlab-team/crawlab.git
synced 2026-01-29 18:00:51 +01:00
fixed worker node failure issue
This commit is contained in:
@@ -76,6 +76,8 @@ func GetService(msg entity.RpcMessage) Service {
|
||||
return &GetInstalledDepsService{msg: msg}
|
||||
case constants.RpcCancelTask:
|
||||
return &CancelTaskService{msg: msg}
|
||||
case constants.RpcGetSystemInfoService:
|
||||
return &GetSystemInfoService{msg: msg}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
67
backend/services/rpc/get_system_info.go
Normal file
67
backend/services/rpc/get_system_info.go
Normal file
@@ -0,0 +1,67 @@
|
||||
package rpc
|
||||
|
||||
import (
|
||||
"crawlab/constants"
|
||||
"crawlab/entity"
|
||||
"crawlab/model"
|
||||
"encoding/json"
|
||||
)
|
||||
|
||||
type GetSystemInfoService struct {
|
||||
msg entity.RpcMessage
|
||||
}
|
||||
|
||||
func (s *GetSystemInfoService) ServerHandle() (entity.RpcMessage, error) {
|
||||
sysInfo, err := GetSystemInfoServiceLocal()
|
||||
if err != nil {
|
||||
s.msg.Error = err.Error()
|
||||
return s.msg, err
|
||||
}
|
||||
|
||||
// 序列化
|
||||
resultStr, _ := json.Marshal(sysInfo)
|
||||
s.msg.Result = string(resultStr)
|
||||
return s.msg, nil
|
||||
}
|
||||
|
||||
func (s *GetSystemInfoService) ClientHandle() (o interface{}, err error) {
|
||||
// 发起 RPC 请求,获取服务端数据
|
||||
s.msg, err = ClientFunc(s.msg)()
|
||||
if err != nil {
|
||||
return o, err
|
||||
}
|
||||
|
||||
var output entity.SystemInfo
|
||||
if err := json.Unmarshal([]byte(s.msg.Result), &output); err != nil {
|
||||
return o, err
|
||||
}
|
||||
o = output
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func GetSystemInfoServiceLocal() (sysInfo entity.SystemInfo, err error) {
|
||||
// 获取环境信息
|
||||
sysInfo, err = model.GetLocalSystemInfo()
|
||||
if err != nil {
|
||||
return sysInfo, err
|
||||
}
|
||||
return sysInfo, nil
|
||||
}
|
||||
|
||||
func GetSystemInfoServiceRemote(nodeId string) (sysInfo entity.SystemInfo, err error) {
|
||||
params := make(map[string]string)
|
||||
params["node_id"] = nodeId
|
||||
s := GetService(entity.RpcMessage{
|
||||
NodeId: nodeId,
|
||||
Method: constants.RpcGetSystemInfoService,
|
||||
Params: params,
|
||||
Timeout: 60,
|
||||
})
|
||||
o, err := s.ClientHandle()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
sysInfo = o.(entity.SystemInfo)
|
||||
return
|
||||
}
|
||||
62
backend/services/rpc/remove_spider.go
Normal file
62
backend/services/rpc/remove_spider.go
Normal file
@@ -0,0 +1,62 @@
|
||||
package rpc
|
||||
|
||||
import (
|
||||
"crawlab/constants"
|
||||
"crawlab/entity"
|
||||
"crawlab/model"
|
||||
"crawlab/utils"
|
||||
"github.com/globalsign/mgo/bson"
|
||||
"github.com/spf13/viper"
|
||||
"path/filepath"
|
||||
)
|
||||
|
||||
type RemoveSpiderService struct {
|
||||
msg entity.RpcMessage
|
||||
}
|
||||
|
||||
func (s *RemoveSpiderService) ServerHandle() (entity.RpcMessage, error) {
|
||||
spiderId := utils.GetRpcParam("spider_id", s.msg.Params)
|
||||
if err := RemoveSpiderServiceLocal(spiderId); err != nil {
|
||||
s.msg.Error = err.Error()
|
||||
return s.msg, err
|
||||
}
|
||||
s.msg.Result = "success"
|
||||
return s.msg, nil
|
||||
}
|
||||
|
||||
func (s *RemoveSpiderService) ClientHandle() (o interface{}, err error) {
|
||||
// 发起 RPC 请求,获取服务端数据
|
||||
_, err = ClientFunc(s.msg)()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func RemoveSpiderServiceLocal(spiderId string) error {
|
||||
// 移除本地的爬虫目录
|
||||
spider, err := model.GetSpider(bson.ObjectIdHex(spiderId))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
path := filepath.Join(viper.GetString("spider.path"), spider.Name)
|
||||
utils.RemoveFiles(path)
|
||||
return nil
|
||||
}
|
||||
|
||||
func RemoveSpiderServiceRemote(spiderId string, nodeId string) (err error) {
|
||||
params := make(map[string]string)
|
||||
params["spider_id"] = spiderId
|
||||
s := GetService(entity.RpcMessage{
|
||||
NodeId: nodeId,
|
||||
Method: constants.RpcRemoveSpider,
|
||||
Params: params,
|
||||
Timeout: 60,
|
||||
})
|
||||
_, err = s.ClientHandle()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
||||
Reference in New Issue
Block a user