package main import ( "flag" "fmt" "time" "github.com/hibiken/asynq" "github.com/zero-ppanel/zero-ppanel/apps/scheduler/internal/config" "github.com/zero-ppanel/zero-ppanel/apps/scheduler/internal/types" "github.com/zeromicro/go-zero/core/conf" "github.com/zeromicro/go-zero/core/logx" "github.com/zeromicro/go-zero/core/trace" ) var configFile = flag.String("f", "etc/scheduler-dev.yaml", "the config file") func main() { flag.Parse() var c config.Config conf.MustLoad(*configFile, &c, conf.UseEnv()) logx.MustSetup(c.Log) if c.Telemetry.Name != "" { trace.StartAgent(c.Telemetry) } location, _ := time.LoadLocation("Asia/Shanghai") scheduler := asynq.NewScheduler( asynq.RedisClientOpt{Addr: c.Asynq.Addr, Password: c.Asynq.Pass}, &asynq.SchedulerOpts{Location: location}, ) // Traffic stats: every 5 minutes scheduler.Register("*/5 * * * *", asynq.NewTask(types.SchedulerTrafficStats, nil)) // Expire check: every hour scheduler.Register("0 * * * *", asynq.NewTask(types.SchedulerExpireCheck, nil)) // Exchange rate: every day at 01:00 scheduler.Register("0 1 * * *", asynq.NewTask(types.SchedulerExchangeRate, nil), asynq.MaxRetry(3)) // Cleanup logs: every day at 03:00 scheduler.Register("0 3 * * *", asynq.NewTask(types.SchedulerCleanupLogs, nil)) fmt.Println("Starting zero-ppanel-scheduler...") if err := scheduler.Run(); err != nil { logx.Must(err) } }