job_sys.go 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. package jobs
  2. import (
  3. log "IotAdmin/core/logger"
  4. "fmt"
  5. "time"
  6. "github.com/robfig/cron/v3"
  7. )
  8. type ExecJob struct {
  9. JobCore
  10. }
  11. func (e *ExecJob) Run() {
  12. startTime := time.Now()
  13. var obj = jobList[e.InvokeTarget]
  14. if obj == nil {
  15. log.Warn("[Job] ExecJob Run jobs nil")
  16. return
  17. }
  18. err := CallExec(obj.(JobExec), e.Args)
  19. if err != nil {
  20. // 如果失败暂停一段时间重试
  21. fmt.Println(time.Now().Format(timeFormat), " [ERROR] mission failed! ", err)
  22. }
  23. // 结束时间
  24. endTime := time.Now()
  25. // 执行时间
  26. latencyTime := endTime.Sub(startTime)
  27. //TODO: 待完善部分
  28. //str := time.Now().Format(timeFormat) + " [INFO] JobCore " + string(e.EntryId) + "exec success , spend :" + latencyTime.String()
  29. //ws.SendAll(str)
  30. log.Infof("[Job] JobCore %s exec success , spend :%v", e.Name, latencyTime)
  31. return
  32. }
  33. func (e *ExecJob) addJob(c *cron.Cron) (int, error) {
  34. id, err := c.AddJob(e.CronExpression, e)
  35. if err != nil {
  36. fmt.Println(time.Now().Format(timeFormat), " [ERROR] JobCore AddJob error", err)
  37. return 0, err
  38. }
  39. EntryId := int(id)
  40. return EntryId, nil
  41. }