job_sys.go 1.0 KB

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