2024-06-13 01:16:48 +00:00
|
|
|
|
package cmd
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"fmt"
|
2024-06-22 11:15:41 +00:00
|
|
|
|
"framework_v2/internal/providers/config"
|
|
|
|
|
"framework_v2/internal/providers/ent"
|
|
|
|
|
"framework_v2/internal/providers/jobs"
|
|
|
|
|
"framework_v2/internal/providers/logger"
|
|
|
|
|
"framework_v2/internal/providers/redis"
|
2024-06-13 01:16:48 +00:00
|
|
|
|
"github.com/spf13/cobra"
|
|
|
|
|
|
|
|
|
|
"time"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
var scheduleCommand = &cobra.Command{
|
|
|
|
|
Use: "schedule",
|
|
|
|
|
|
|
|
|
|
Run: func(cmd *cobra.Command, args []string) {
|
2024-06-15 16:55:25 +00:00
|
|
|
|
config.InitConfig()
|
|
|
|
|
logger.InitLogger()
|
|
|
|
|
ent.InitEnt()
|
|
|
|
|
redis.InitRedis()
|
|
|
|
|
jobs.InitAsynQClient()
|
2024-06-13 01:16:48 +00:00
|
|
|
|
|
|
|
|
|
runSchedule()
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func runSchedule() {
|
|
|
|
|
|
2024-06-15 16:55:25 +00:00
|
|
|
|
if config.Config.DebugMode.Enable {
|
2024-06-13 01:16:48 +00:00
|
|
|
|
fmt.Println("调试模式开启,直接触发。")
|
|
|
|
|
// RUN JOB
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 获取下一个整点时间
|
|
|
|
|
nextHour := time.Now().Truncate(time.Hour).Add(time.Hour)
|
|
|
|
|
|
|
|
|
|
// 计算当前时间到下一个整点的时间差
|
|
|
|
|
duration := nextHour.Sub(time.Now())
|
|
|
|
|
|
|
|
|
|
// 设置定时器,在下一个整点触发
|
|
|
|
|
timer := time.NewTimer(duration)
|
|
|
|
|
|
|
|
|
|
// 用无限循环,在每个小时整点执行任务
|
|
|
|
|
for {
|
|
|
|
|
select {
|
|
|
|
|
case <-timer.C:
|
|
|
|
|
// 每小时整点执行的代码
|
|
|
|
|
fmt.Printf("执行任务,当前时间:%v\n", time.Now().Format("2006-01-02 15:04:05"))
|
|
|
|
|
|
|
|
|
|
// DO JOB.
|
|
|
|
|
|
|
|
|
|
// 重置定时器,设置为1小时后再次触发
|
|
|
|
|
timer.Reset(time.Hour)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|