task.go 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. package init_serve
  2. import (
  3. "eta/mysteel_watch/services"
  4. "eta/mysteel_watch/utils"
  5. "eta/mysteel_watch/watch"
  6. "github.com/robfig/cron/v3"
  7. "time"
  8. "eta/mysteel_watch/global"
  9. "eta/mysteel_watch/services/alarm_msg"
  10. )
  11. func InitTask() {
  12. c := cron.New(cron.WithSeconds())
  13. //awk '{ if ($9 <= 200) print "<= 200ms"; else if ($9 <= 500) print "201-500ms"; else if ($9 <= 1000) print "501-1000ms"; else if ($9 <= 2000) print "1001-2000ms"; else print "> 2000ms"; }' eta_api.log | sort | uniq -c
  14. //每5分钟检测一次,指标生成
  15. _, err := c.AddFunc("0 */5 * * * *", CheckIndexCreateMerge)
  16. if err != nil {
  17. global.LOG.Error("CheckIndexCreateMerge err" + err.Error())
  18. }
  19. // 定时统一更新(日度、周度指标)
  20. if len(global.CONFIG.Serve.RefreshTimeList) <= 0 {
  21. //panic("未配置数据统一刷新时间")
  22. // 未配置时间的话,那么默认每天17点更新一次
  23. global.CONFIG.Serve.RefreshTimeList = append(global.CONFIG.Serve.RefreshTimeList, "0 0 17 * * *")
  24. }
  25. for _, timeStr := range global.CONFIG.Serve.RefreshTimeList {
  26. _, tmpErr := c.AddFunc(timeStr, services.MergeDayAndWeek)
  27. if tmpErr != nil {
  28. global.LOG.Error("services.MergeDayAndWeek 服务启动失败" + "时间:" + timeStr + ";err:" + tmpErr.Error())
  29. }
  30. }
  31. // 每天早上7点处理一次
  32. _, err = c.AddFunc("0 0 7 * * *", services.MergeMonthSeasonYear)
  33. if err != nil {
  34. global.LOG.Error("services.MergeMonthSeasonYear err" + err.Error())
  35. }
  36. //每2分钟检测一次指标文件是否更新
  37. _, err = c.AddFunc("0 */2 * * * *", watch.ReadWatchIndexFile)
  38. if err != nil {
  39. global.LOG.Error("watch.ReadWatchIndexFile err" + err.Error())
  40. }
  41. // 服务检测
  42. _, err = c.AddFunc("0 */1 * * * *", services.ServerCheck)
  43. if err != nil {
  44. global.LOG.Error("ServerCheck err" + err.Error())
  45. }
  46. // 指标更新检测
  47. if global.CONFIG.Serve.IsCheckIndexUpdate {
  48. services.IndexUpdateCheck()
  49. _, err = c.AddFunc("0 30 17 * * *", services.IndexUpdateCheck)
  50. if err != nil {
  51. global.LOG.Error("IndexUpdateCheck err" + err.Error())
  52. }
  53. }
  54. c.Start()
  55. // 异步处理待刷新的excel
  56. go services.AutoRefresh()
  57. }
  58. // CheckIndexCreate 检测指标数据是否生成
  59. func CheckIndexCreate() {
  60. var err error
  61. defer func() {
  62. if err != nil && err.Error() != "record not found" {
  63. global.LOG.Info(utils.APPNAME + " 定时任务 出错" + time.Now().Format("2006-01-02 15:04:05") + ";Err:" + err.Error())
  64. go alarm_msg.SendAlarmMsg(utils.APPNAME+" 定时任务 出错"+time.Now().Format("2006-01-02 15:04:05")+";Err:"+err.Error(), 3)
  65. }
  66. }()
  67. err = services.IndexCreateCheck()
  68. }
  69. // CheckIndexCreateMerge 检测指标数据是否生成
  70. func CheckIndexCreateMerge() {
  71. var err error
  72. defer func() {
  73. if err != nil && err.Error() != "record not found" {
  74. global.LOG.Info(utils.APPNAME + " 定时任务 出错" + time.Now().Format("2006-01-02 15:04:05") + ";Err:" + err.Error())
  75. //go alarm_msg.SendAlarmMsg(utils.APPNAME+" 定时任务 出错"+time.Now().Format("2006-01-02 15:04:05")+";Err:"+err.Error(), 3)
  76. }
  77. }()
  78. err = services.IndexCreateCheckMerge()
  79. }