scheduler.go 1.3 KB

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