|
|
@@ -3,15 +3,12 @@ package services
|
|
|
|
|
|
import (
|
|
|
"context"
|
|
|
- "fmt"
|
|
|
"go-policy-service/config"
|
|
|
"go-policy-service/models"
|
|
|
"go-policy-service/utils"
|
|
|
"math"
|
|
|
"sync"
|
|
|
"time"
|
|
|
-
|
|
|
- "github.com/robfig/cron"
|
|
|
)
|
|
|
|
|
|
var HgConfig *models.HgConfig
|
|
|
@@ -64,29 +61,28 @@ func (p *TaskProcessor) Run(cfg *config.Config) {
|
|
|
// 初始化HangguanService
|
|
|
p.hgService = NewHangguanService(cfg, p.httpClient, tokenMgr)
|
|
|
|
|
|
- // 初始化cron调度器,无自定义logger
|
|
|
- c := cron.New()
|
|
|
- scheduleSpec := fmt.Sprintf("@every %s", cfg.Interval)
|
|
|
- // AddFunc 只返回 EntryID
|
|
|
- entryID := c.AddFunc(scheduleSpec, func() {
|
|
|
- utils.Logger.Info("Starting scheduled task processing...")
|
|
|
+ interval, err := time.ParseDuration(cfg.Interval)
|
|
|
+ if err != nil {
|
|
|
+ utils.Logger.Fatal("无效的时间间隔配置: ", err)
|
|
|
+ }
|
|
|
+
|
|
|
+ for {
|
|
|
+ utils.Logger.Info("开始任务处理循环...")
|
|
|
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Minute)
|
|
|
- defer cancel()
|
|
|
|
|
|
if err := p.ProcessTasks(ctx); err != nil {
|
|
|
- utils.Logger.Error("Task processing failed: ", err)
|
|
|
+ utils.Logger.Error("任务处理失败: ", err)
|
|
|
}
|
|
|
- })
|
|
|
- utils.Logger.Info(fmt.Sprintf("Scheduled task with entry ID: %v", entryID))
|
|
|
|
|
|
- // 开启调度器
|
|
|
- c.Start()
|
|
|
- utils.Logger.Info("Service started successfully")
|
|
|
+ cancel()
|
|
|
+ utils.Logger.Infof("任务处理完成,等待 %v 后进行下一轮处理", interval)
|
|
|
+ time.Sleep(interval)
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
// ProcessTasks方法改进
|
|
|
func (p *TaskProcessor) ProcessTasks(ctx context.Context) error {
|
|
|
- tasks, err := models.GetPendingTasks(ctx, 1000)
|
|
|
+ tasks, err := models.GetPendingTasks(ctx, 0) // 每次取所有任务
|
|
|
if err != nil {
|
|
|
return err
|
|
|
}
|
|
|
@@ -128,7 +124,7 @@ func (p *TaskProcessor) worker(ctx context.Context, tasks <-chan models.HgFlight
|
|
|
// 可以访问p.cfg获取配置
|
|
|
if err := validateTask(task); err != nil {
|
|
|
// 处理无效任务
|
|
|
- utils.Logger.WithField("task_id", task.ID).Errorf("Invalid task parameters:%v", err)
|
|
|
+ utils.Logger.WithField("task_id", task.ID).Errorf("任务参数有误,请检查任务:%v", err)
|
|
|
continue
|
|
|
}
|
|
|
// 请求数据
|