task bug fix

This commit is contained in:
liuzhihang1
2025-02-13 11:16:02 +08:00
parent b59b251102
commit 1852f7ab4c
2 changed files with 21 additions and 5 deletions

View File

@@ -141,6 +141,7 @@ var OperationHandle = map[constants.TaskOperation]operationFunc{
return false return false
} }
log.Logger.Debugw("异步停止任务") log.Logger.Debugw("异步停止任务")
proc.State.manualStopFlag = true
go proc.Kill() go proc.Kill()
return true return true
}, },
@@ -151,6 +152,7 @@ var OperationHandle = map[constants.TaskOperation]operationFunc{
return false return false
} }
log.Logger.Debugw("停止任务并等待结束") log.Logger.Debugw("停止任务并等待结束")
proc.State.manualStopFlag = true
return proc.Kill() == nil return proc.Kill() == nil
}, },
} }

View File

@@ -133,17 +133,31 @@ func (t *taskLogic) CreateTask(data model.Task) error {
} }
func (t *taskLogic) EditTask(data model.Task) error { func (t *taskLogic) EditTask(data model.Task) error {
if data.Cron != nil {
if _, err := cron.ParseStandard(*data.Cron); err != nil {
return err
}
}
v, ok := t.taskJobMap.Load(data.Id) v, ok := t.taskJobMap.Load(data.Id)
if !ok { if !ok {
return errors.New("don't exist this task id") return errors.New("don't exist this task id")
} }
tj := v.(*model.TaskJob) tj := v.(*model.TaskJob)
if tj.Running {
return errors.New("can't edit when task is running")
}
tj.Cron.Stop()
tj.Task = &data tj.Task = &data
if tj.Task.Cron != nil {
if _, err := cron.ParseStandard(*tj.Task.Cron); err != nil {
return err
}
c := cron.New()
_, err := c.AddFunc(*data.Cron, t.cronHandle(tj))
if err != nil {
log.Logger.Errorw("定时任务创建失败", "err", err, "id", data.Id)
return err
}
if data.Enable {
c.Start()
}
tj.Cron = c
}
return repository.TaskRepository.EditTask(data) return repository.TaskRepository.EditTask(data)
} }