Some checks failed
Build docker and publish / prepare (push) Has been cancelled
Build docker and publish / build (map[dockerfile:deploy/Dockerfile.admin image_name:ppanel-admin name:admin]) (push) Has been cancelled
Build docker and publish / build (map[dockerfile:deploy/Dockerfile.api image_name:ppanel-api name:api]) (push) Has been cancelled
Build docker and publish / build (map[dockerfile:deploy/Dockerfile.node image_name:ppanel-node name:node]) (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.scheduler image_name:ppanel-scheduler name:scheduler]) (push) Has been cancelled
Build docker and publish / deploy (push) Has been cancelled
Build docker and publish / notify (push) Has been cancelled
52 lines
1.4 KiB
Go
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)
|
|
|
|
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)
|
|
}
|
|
}
|