package jobs import ( "IotAdmin/core/sdk/pkg" "fmt" "time" "github.com/robfig/cron/v3" ) // HttpJob 任务类型 http type HttpJob struct { JobCore } // Run http 任务接口 func (h *HttpJob) Run() { startTime := time.Now() var count = 0 var err error var str string /* 循环 */ LOOP: if count < retryCount { /* 跳过迭代 */ str, err = pkg.Get(h.InvokeTarget) if err != nil { // 如果失败暂停一段时间重试 jobLogger.Errorf("[%s] EXEC FAILED! ERROR: %s", h.Name, err.Error()) jobLogger.Infof("[%s] Retry after the task fails %d seconds! %s ", h.Name, (count+1)*5, str) time.Sleep(time.Duration(count+1) * 5 * time.Second) count = count + 1 goto LOOP } } // 结束时间 endTime := time.Now() // 执行时间 latencyTime := endTime.Sub(startTime) //TODO: 待完善部分 jobLogger.Infof("%s EXEC SUCCESS , SPEND :%v", h.Name, latencyTime) return } func (h *HttpJob) addJob(c *cron.Cron) (int, error) { id, err := c.AddJob(h.CronExpression, h) if err != nil { fmt.Println(time.Now().Format(timeFormat), " [ERROR] JobCore AddJob error", err) return 0, err } EntryId := int(id) return EntryId, nil }