增加任务运行的方法

This commit is contained in:
2022-06-23 16:46:22 +08:00
parent 30b6fa4c46
commit a7552c210d
3 changed files with 47 additions and 6 deletions

47
task.go
View File

@@ -10,7 +10,9 @@ package task
import (
"context"
"fmt"
"runtime"
"sync"
"time"
)
var (
@@ -76,6 +78,47 @@ func (d *dispatch) Remove(taskNameList ...string) error {
// Author : go_developer@163.com<白茶清欢>
//
// Date : 15:18 2022/6/23
func (d *dispatch) Run(ctx context.Context, cfg *Config, taskParam map[string]interface{}) (map[string]interface{}, error) {
return nil, nil
func (d *dispatch) Run(ctx context.Context, cfg *Config) *Result {
var (
taskInstance ITask
exist bool
)
result := &Result{
StartTime: time.Now().UnixNano(),
FinishTime: 0,
Used: 0,
TaskRunID: "",
TaskDescription: "",
TaskConfig: cfg,
Data: nil,
Err: nil,
}
defer func() {
result.FinishTime = time.Now().UnixNano()
result.Used = result.FinishTime - result.StartTime
if e := recover(); nil != e {
switch e.(type) {
case runtime.Error: // 运行时错误
result.Err = fmt.Errorf("出现运行时Panic : %v", e)
default: // 非运行时错误
result.Err = fmt.Errorf("出现其他场景Panic : %v", e)
}
}
}()
d.lock.RLock()
if taskInstance, exist = d.taskTable[cfg.TaskName]; !exist {
result.Err = fmt.Errorf("%v 任务未注册", cfg.TaskName)
}
result.TaskRunID = taskInstance.GetRunID()
result.TaskDescription = taskInstance.Description()
if cfg.Async {
// 异步运行
go func() {
result.Data, result.Err = taskInstance.Execute(ctx, cfg)
}()
} else {
result.Data, result.Err = taskInstance.Execute(ctx, cfg)
}
return result
}