fix 状态错误的问题

This commit is contained in:
陈景阳
2019-10-08 19:41:29 +08:00
parent 10e8827dd3
commit 4c8b38f40b

View File

@@ -14,10 +14,12 @@ import (
"os"
"os/exec"
"path/filepath"
"reflect"
"runtime"
"runtime/debug"
"strconv"
"sync"
"syscall"
"time"
)
@@ -142,7 +144,7 @@ func ExecuteShellCmd(cmdStr string, cwd string, t model.Task, s model.Spider) (e
log.Infof("cancel process signal: %s", signal)
if signal == constants.TaskCancel && cmd.Process != nil {
// 取消进程
if err := cmd.Process.Kill(); err != nil {
if err := syscall.Kill(-cmd.Process.Pid, syscall.SIGKILL); err != nil {
log.Errorf("process kill error: %s", err.Error())
debug.PrintStack()
}
@@ -152,6 +154,7 @@ func ExecuteShellCmd(cmdStr string, cwd string, t model.Task, s model.Spider) (e
t.Status = constants.StatusFinished
}
t.FinishTs = time.Now()
t.Error = "user kill the process ..."
if err := t.Save(); err != nil {
log.Infof("save task error: %s", err.Error())
debug.PrintStack()
@@ -159,6 +162,8 @@ func ExecuteShellCmd(cmdStr string, cwd string, t model.Task, s model.Spider) (e
}
}()
// 在选择所有节点执行的时候,实际就是随机一个节点执行的,
cmd.SysProcAttr = &syscall.SysProcAttr{Setpgid: true}
// 异步启动进程
if err := cmd.Start(); err != nil {
log.Errorf("start spider error:{}", err.Error())
@@ -177,11 +182,12 @@ func ExecuteShellCmd(cmdStr string, cwd string, t model.Task, s model.Spider) (e
log.Errorf("wait process finish error: %s", err.Error())
debug.PrintStack()
log.Infof("error type is : %s", reflect.TypeOf(err).String())
// 发生一次也需要保存
t.Error = err.Error()
t.FinishTs = time.Now()
t.Status = constants.StatusFinished
_ = t.Save()
//t.Error = err.Error()
//t.FinishTs = time.Now()
//t.Status = constants.StatusError
//_ = t.Save()
return err
}
ch <- constants.TaskFinish