2
0
mirror of https://github.com/acepanel/panel.git synced 2026-02-04 10:17:17 +08:00

fix: 等待中的任务显示为运行中

This commit is contained in:
耗子
2024-07-13 03:25:55 +08:00
parent 1e081fcdf2
commit fee0fcb998
3 changed files with 17 additions and 19 deletions

View File

@@ -45,7 +45,6 @@ func (receiver *Monitoring) Handle(console.Context) error {
}
// 将等待中的任务分发
// TODO 有bug需要设计一个锁机制防止重复分发
task := services.NewTaskImpl()
_ = task.DispatchWaiting()

View File

@@ -39,6 +39,15 @@ func (receiver *ProcessTask) Handle(args ...any) error {
"task_id": taskID,
}).Infof("开始执行任务")
task.Status = models.TaskStatusRunning
if err := facades.Orm().Query().Save(&task); err != nil {
facades.Log().Tags("面板", "异步任务").With(map[string]any{
"task_id": taskID,
"error": err.Error(),
}).Infof("更新任务状态失败")
return nil
}
if _, err := shell.Execf(task.Shell); err != nil {
task.Status = models.TaskStatusFailed
_ = facades.Orm().Query().Save(&task)
@@ -50,7 +59,13 @@ func (receiver *ProcessTask) Handle(args ...any) error {
}
task.Status = models.TaskStatusSuccess
_ = facades.Orm().Query().Save(&task)
if err := facades.Orm().Query().Save(&task); err != nil {
facades.Log().Tags("面板", "异步任务").With(map[string]any{
"task_id": taskID,
"error": err.Error(),
}).Infof("更新任务状态失败")
return nil
}
facades.Log().Tags("面板", "异步任务").With(map[string]any{
"task_id": taskID,

View File

@@ -3,7 +3,6 @@ package services
import (
"sync"
"github.com/goravel/framework/database/orm"
"github.com/goravel/framework/facades"
"github.com/TheTNB/panel/app/jobs"
@@ -20,9 +19,7 @@ func NewTaskImpl() *TaskImpl {
}
func (r *TaskImpl) Process(taskID uint) error {
if err := r.markAsRunning(taskID); err != nil {
return err
}
taskMap.Store(taskID, true)
return facades.Queue().Job(&jobs.ProcessTask{}, []any{taskID}).Dispatch()
}
@@ -43,16 +40,3 @@ func (r *TaskImpl) DispatchWaiting() error {
return nil
}
func (r *TaskImpl) markAsRunning(taskID uint) error {
task := models.Task{
Model: orm.Model{ID: taskID},
Status: models.TaskStatusRunning,
}
if _, err := facades.Orm().Query().Where("id", taskID).Update(&task); err != nil {
return err
}
taskMap.Store(taskID, true)
return nil
}