rag/internal/cmd/schedule.go

57 lines
1.1 KiB
Go
Raw Normal View History

2024-06-13 01:16:48 +00:00
package cmd
import (
"fmt"
"framework_v2/internal/providers"
"github.com/spf13/cobra"
"time"
)
var scheduleCommand = &cobra.Command{
Use: "schedule",
Run: func(cmd *cobra.Command, args []string) {
providers.InitConfig()
providers.InitLogger()
providers.InitEnt()
providers.InitRedis()
providers.InitAsynQClient()
providers.InitMeiliSearch()
runSchedule()
},
}
func runSchedule() {
if providers.Config.DebugMode.Enable {
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)
}
}
}