package task import ( "fmt" "github.com/cloudreve/Cloudreve/v3/pkg/util" ) // Worker 处理任务的对象 type Worker interface { Do(Job) // 执行任务 } // GeneralWorker 通用Worker type GeneralWorker struct { } // Do 执行任务 func (worker *GeneralWorker) Do(job Job) { util.Log().Debug("Start executing task.") job.SetStatus(Processing) defer func() { // 致命错误捕获 if err := recover(); err != nil { util.Log().Debug("Failed to execute task: %s", err) job.SetError(&JobError{Msg: "Fatal error.", Error: fmt.Sprintf("%s", err)}) job.SetStatus(Error) } }() // 开始执行任务 job.Do() // 任务执行失败 if err := job.GetError(); err != nil { util.Log().Debug("Failed to execute task.") job.SetStatus(Error) return } util.Log().Debug("Task finished.") // 执行完成 job.SetStatus(Complete) }