修复异步任务panic未捕获问题
This commit is contained in:
parent
a7552c210d
commit
1136b75c32
17
task.go
17
task.go
@ -97,24 +97,25 @@ func (d *dispatch) Run(ctx context.Context, cfg *Config) *Result {
|
|||||||
defer func() {
|
defer func() {
|
||||||
result.FinishTime = time.Now().UnixNano()
|
result.FinishTime = time.Now().UnixNano()
|
||||||
result.Used = result.FinishTime - result.StartTime
|
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()
|
d.lock.RLock()
|
||||||
if taskInstance, exist = d.taskTable[cfg.TaskName]; !exist {
|
if taskInstance, exist = d.taskTable[cfg.TaskName]; !exist {
|
||||||
result.Err = fmt.Errorf("%v 任务未注册", cfg.TaskName)
|
result.Err = fmt.Errorf("%v 任务未注册", cfg.TaskName)
|
||||||
}
|
}
|
||||||
|
d.lock.RUnlock()
|
||||||
result.TaskRunID = taskInstance.GetRunID()
|
result.TaskRunID = taskInstance.GetRunID()
|
||||||
result.TaskDescription = taskInstance.Description()
|
result.TaskDescription = taskInstance.Description()
|
||||||
if cfg.Async {
|
if cfg.Async {
|
||||||
// 异步运行
|
// 异步运行
|
||||||
go func() {
|
go func() {
|
||||||
|
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)
|
||||||
|
}
|
||||||
|
}
|
||||||
result.Data, result.Err = taskInstance.Execute(ctx, cfg)
|
result.Data, result.Err = taskInstance.Execute(ctx, cfg)
|
||||||
}()
|
}()
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
Reference in New Issue
Block a user