scheduler.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package scheduler
  2. import (
  3. "log"
  4. "time"
  5. "github.com/robfig/cron/v3"
  6. "go.uber.org/zap"
  7. )
  8. func Init() *cron.Cron {
  9. c := cron.New()
  10. // c.AddFunc("@every 1h", func() {
  11. // log.Println("每小时任务执行")
  12. // // do job
  13. // })
  14. c.AddFunc("30 10 * * *", func() {
  15. log.Println("每天10:30任务执行")
  16. // do job
  17. })
  18. c.AddFunc("10 12 * * *", func() {
  19. log.Println("每天12:10任务执行")
  20. // do job
  21. })
  22. // 告警统计任务,每天上午5点
  23. c.AddFunc("0 5 * * *", func() {
  24. log.Println("告警统计任务,每天5:00任务执行")
  25. // do job
  26. })
  27. // 每天 14:00 执行一次
  28. // robfig/cron 默认支持 6 字段:秒 分 时 日 月 星期
  29. // "0 0 14 * * *" 秒=0, 分=0, 时=14,每天执行
  30. c.AddFunc("35 15 * * *", func() {
  31. log.Println("每天 15:35 执行Shutdown统计")
  32. // 获取当前时间
  33. // now := time.Now()
  34. // 计算前天(往前两天)
  35. // beforeYesterday := now.AddDate(0, 0, -2)
  36. // 格式化为字符串(按 yyyy-MM-dd)
  37. // beforeYesterdayStr := beforeYesterday.Format(time.DateOnly)
  38. // TODO 暂停每日任务
  39. // taskQueue.EnqueueShutdownStatisticsTask(domain.TaskShutdownStatistics{
  40. // Date: beforeYesterdayStr,
  41. // })
  42. })
  43. c.Start()
  44. // 打印任务计划表
  45. entries := c.Entries()
  46. var entriesStr []string
  47. for _, i := range entries {
  48. entriesStr = append(entriesStr, i.Next.Format(time.DateTime))
  49. }
  50. zap.L().Debug("cron entries", zap.Any("entries", entriesStr))
  51. return c
  52. }