| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- 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
- }
|