- refactor tasksch
- sequence task added. - task tree added.
This commit is contained in:
@@ -21,39 +21,35 @@ type SeqTask struct {
|
||||
|
||||
func NewSeqTask(taskName string, userName string, worker SeqWorkFunc, stepCount int, params ...interface{}) *SeqTask {
|
||||
task := &SeqTask{
|
||||
BaseTask: BaseTask{
|
||||
ParallelCount: 1,
|
||||
params: params,
|
||||
ID: utils.GetUUID(),
|
||||
Name: taskName,
|
||||
CreatedAt: time.Now(),
|
||||
CreatedBy: userName,
|
||||
UpdatedAt: time.Now(),
|
||||
TotalJobCount: stepCount,
|
||||
TotalItemCount: stepCount,
|
||||
quitChan: make(chan int, 1),
|
||||
finishChan: make(chan int, 2),
|
||||
Status: TaskStatusWorking,
|
||||
},
|
||||
worker: worker,
|
||||
}
|
||||
task.C = task.finishChan
|
||||
task.Init(1, 1, false, params, taskName, userName, stepCount, stepCount)
|
||||
return task
|
||||
}
|
||||
|
||||
func (task *SeqTask) Run() *SeqTask {
|
||||
go func() {
|
||||
globals.SugarLogger.Debugf("Run SeqTask %s", task.Name)
|
||||
func (task *SeqTask) Run() {
|
||||
task.run(func() {
|
||||
globals.SugarLogger.Debugf("SeqTask.Run %s", task.Name)
|
||||
var taskErr error
|
||||
var taskResult interface{}
|
||||
var taskResult []interface{}
|
||||
for i := 0; i < task.TotalItemCount; i++ {
|
||||
taskResult, taskErr = task.worker(i, task.params...)
|
||||
task.finishedOneJob(1, taskErr)
|
||||
if taskErr != nil {
|
||||
break
|
||||
select {
|
||||
case <-task.quitChan:
|
||||
goto EndFor
|
||||
default:
|
||||
}
|
||||
result, err := task.worker(i, task.params...)
|
||||
task.finishedOneJob(1, err)
|
||||
if taskErr = err; taskErr != nil {
|
||||
globals.SugarLogger.Infof("SeqTask.Run %s step:%d failed with error:%v", task.Name, i, err)
|
||||
if !task.IsContinueWhenError {
|
||||
break
|
||||
}
|
||||
} else if result != nil {
|
||||
taskResult = append(taskResult, utils.Interface2Slice(result)...)
|
||||
}
|
||||
}
|
||||
|
||||
EndFor:
|
||||
task.locker.Lock()
|
||||
if taskErr != nil { // 如果有错误,肯定就是失败了
|
||||
task.Status = TaskStatusFailed
|
||||
@@ -65,15 +61,14 @@ func (task *SeqTask) Run() *SeqTask {
|
||||
task.Status = TaskStatusFinished
|
||||
}
|
||||
}
|
||||
task.err = taskErr
|
||||
task.result = taskResult
|
||||
task.Err = taskErr
|
||||
task.Result = taskResult
|
||||
task.TerminatedAt = time.Now()
|
||||
task.locker.Unlock()
|
||||
|
||||
globals.SugarLogger.Debugf("Run SeqTask %s, result:%v, err:%v", task.Name, taskResult, taskErr)
|
||||
globals.SugarLogger.Debugf("SeqTask.Run %s, result:%v, err:%v", task.Name, taskResult, taskErr)
|
||||
|
||||
close(task.finishChan)
|
||||
close(task.quitChan)
|
||||
}()
|
||||
return task
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user