marvzhang
2020-07-03 17:28:07 +08:00
parent 14ab3b9208
commit 13e8da9cda
6 changed files with 88 additions and 38 deletions

View File

@@ -4,11 +4,11 @@ import (
"bufio"
"crawlab/constants"
"crawlab/database"
"crawlab/entity"
"crawlab/lib/cron"
"crawlab/model"
"crawlab/services/local_node"
"crawlab/services/notification"
"crawlab/services/rpc"
"crawlab/services/spider_handler"
"crawlab/utils"
"encoding/json"
@@ -395,7 +395,6 @@ func ExecuteShellCmd(cmdStr string, cwd string, t model.Task, s model.Spider, u
// 起一个goroutine来监控进程
ch := utils.TaskExecChanMap.ChanBlocked(t.Id)
go FinishOrCancelTask(ch, cmd, s, t)
// kill的时候可以kill所有的子进程
@@ -788,34 +787,12 @@ func CancelTask(id string) (err error) {
if node.Id == task.NodeId {
// 任务节点为主节点
// 获取任务执行频道
ch := utils.TaskExecChanMap.ChanBlocked(id)
if ch != nil {
// 发出取消进程信号
ch <- constants.TaskCancel
} else {
if err := model.UpdateTaskToAbnormal(node.Id); err != nil {
log.Errorf("update task to abnormal : {}", err.Error())
debug.PrintStack()
return err
}
if err := rpc.CancelTaskLocal(task.Id, task.NodeId.Hex()); err != nil {
return err
}
} else {
// 任务节点为工作节点
// 序列化消息
msg := entity.NodeMessage{
Type: constants.MsgTypeCancelTask,
TaskId: id,
}
msgBytes, err := json.Marshal(&msg)
if err != nil {
return err
}
// 发布消息
if _, err := database.RedisClient.Publish("nodes:"+task.NodeId.Hex(), utils.BytesToString(msgBytes)); err != nil {
if err := rpc.CancelTaskRemote(task.Id, task.NodeId.Hex()); err != nil {
return err
}
}