| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- package jobs
- import (
- "IotAdmin/core/sdk/pkg"
- "time"
- "github.com/robfig/cron/v3"
- )
- // HttpJob 任务类型 http
- type HttpJob struct {
- JobCore
- }
- // Run http 任务接口
- func (h *HttpJob) Run() {
- startTime := time.Now()
- err := CallExec(h, &h.JobCore)
- // 结束时间
- endTime := time.Now()
- // 执行时间
- latencyTime := endTime.Sub(startTime)
- if err != nil {
- jobLogger.Errorf("%s EXEC ERROR , SPEND :%v, ERROR: %s", h.Name, latencyTime, err.Error())
- return
- }
- jobLogger.Infof("%s EXEC SUCCESS , SPEND :%v", h.Name, latencyTime)
- return
- }
- func (h *HttpJob) Exec(jobCore *JobCore) (err error) {
- var count = 0
- var str string
- /* 循环 */
- LOOP:
- if count < retryCount {
- /* 跳过迭代 */
- str, err = pkg.Get(h.InvokeTarget)
- if err != nil {
- // 如果失败暂停一段时间重试
- jobLogger.Errorf("【%s】 EXEC FAILED! %s", h.Name, err.Error())
- jobLogger.Infof("【%s】 RETRY AFTER %d SECONDS [%s]", h.Name, (count+1)*15, str)
- time.Sleep(time.Duration(count+1) * 15 * time.Second)
- count = count + 1
- goto LOOP
- }
- }
- return
- }
- func (h *HttpJob) GetName() string {
- return ""
- }
- func (h *HttpJob) addJob(c *cron.Cron) (int, error) {
- id, err := c.AddJob(h.CronExpression, h)
- if err != nil {
- jobLogger.Errorf("ADDJOB ERROR: %s", err.Error())
- return 0, err
- }
- EntryId := int(id)
- return EntryId, nil
- }
|