Cloudreve/pkg/task/worker.go

42 lines
810 B
Go
Raw Normal View History

2020-02-02 01:40:07 -05:00
package task
import "github.com/cloudreve/Cloudreve/v3/pkg/util"
2020-02-02 01:40:07 -05:00
// Worker 处理任务的对象
type Worker interface {
Do(Job) // 执行任务
}
// GeneralWorker 通用Worker
type GeneralWorker struct {
}
// Do 执行任务
func (worker *GeneralWorker) Do(job Job) {
util.Log().Debug("开始执行任务")
job.SetStatus(Processing)
defer func() {
// 致命错误捕获
if err := recover(); err != nil {
2020-02-06 03:01:06 -05:00
util.Log().Debug("任务执行出错,%s", err)
2020-02-02 01:40:07 -05:00
job.SetError(&JobError{Msg: "致命错误"})
job.SetStatus(Error)
}
}()
// 开始执行任务
job.Do()
// 任务执行失败
if err := job.GetError(); err != nil {
util.Log().Debug("任务执行出错")
job.SetStatus(Error)
return
}
util.Log().Debug("任务执行完成")
// 执行完成
job.SetStatus(Complete)
}