57 lines
1.1 KiB
Go
57 lines
1.1 KiB
Go
|
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)
|
|||
|
}
|
|||
|
}
|
|||
|
}
|