package scheduler import ( "log" "time" "github.com/robfig/cron/v3" "go.uber.org/zap" ) func Init() *cron.Cron { c := cron.New() // UTC时间 23点55分 定时任务 c.AddFunc("CRON_TZ=UTC 0 23 * * *", func() { log.Println("run at UTC midnight:", time.Now().UTC()) log.Println("run at Local midnight:", time.Now()) // SIM卡每日信息更新任务 // err := task.CreateTaskSimCardCollect() // if err != nil { // zap.L().Error("CreateTaskSimCardCollect failed.", zap.String("err", err.Error()), zap.String("time(UTC)", time.Now().UTC().Format(time.DateTime))) // } }) // c.AddFunc("@every 1h", func() { // log.Println("每小时任务执行") // // do job // }) c.AddFunc("30 10 * * *", func() { log.Println("每天10:30任务执行") // do job }) c.AddFunc("10 12 * * *", func() { log.Println("每天12:10任务执行") // do job }) // 告警统计任务,每天上午5点 c.AddFunc("0 5 * * *", func() { log.Println("告警统计任务,每天5:00任务执行") // do job }) // 每天 14:00 执行一次 // robfig/cron 默认支持 6 字段:秒 分 时 日 月 星期 // "0 0 14 * * *" 秒=0, 分=0, 时=14,每天执行 c.AddFunc("35 15 * * *", func() { log.Println("每天 15:35 执行Shutdown统计") // 获取当前时间 // now := time.Now() // 计算前天(往前两天) // beforeYesterday := now.AddDate(0, 0, -2) // 格式化为字符串(按 yyyy-MM-dd) // beforeYesterdayStr := beforeYesterday.Format(time.DateOnly) // TODO 暂停每日任务 // taskQueue.EnqueueShutdownStatisticsTask(domain.TaskShutdownStatistics{ // Date: beforeYesterdayStr, // }) }) c.Start() // 打印任务计划表 entries := c.Entries() var entriesStr []string for _, i := range entries { entriesStr = append(entriesStr, i.Next.Format(time.DateTime)) } zap.L().Debug("cron entries", zap.Any("entries", entriesStr)) return c }