shanshanzhong b42c90188a
Some checks failed
Build docker and publish / prepare (20.15.1) (push) Successful in 2s
Build docker and publish / build (map[dockerfile:deploy/Dockerfile.admin image_name:ppanel-admin name:admin]) (push) Successful in 4m10s
Build docker and publish / build (map[dockerfile:deploy/Dockerfile.node image_name:ppanel-node name:node]) (push) Has been cancelled
Build docker and publish / deploy (push) Has been cancelled
Build docker and publish / notify (push) Has been cancelled
Build docker and publish / build (map[dockerfile:deploy/Dockerfile.scheduler image_name:ppanel-scheduler name:scheduler]) (push) Has been cancelled
Build docker and publish / build (map[dockerfile:deploy/Dockerfile.queue image_name:ppanel-queue name:queue]) (push) Has been cancelled
Build docker and publish / build (map[dockerfile:deploy/Dockerfile.api image_name:ppanel-api name:api]) (push) Has been cancelled
go mod tidy
2026-02-28 04:15:05 -08:00

52 lines
1.4 KiB
Go

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)
}
}