mirror of
https://github.com/acepanel/panel.git
synced 2026-02-04 11:27:17 +08:00
fix: jobs
This commit is contained in:
@@ -3,6 +3,7 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"github.com/TheTNB/panel/internal/job"
|
||||
"github.com/google/wire"
|
||||
|
||||
"github.com/TheTNB/panel/internal/app"
|
||||
@@ -14,5 +15,5 @@ import (
|
||||
|
||||
// initWeb init application.
|
||||
func initWeb() (*app.Web, error) {
|
||||
panic(wire.Build(bootstrap.ProviderSet, route.ProviderSet, service.ProviderSet, data.ProviderSet, app.NewWeb))
|
||||
panic(wire.Build(bootstrap.ProviderSet, route.ProviderSet, service.ProviderSet, data.ProviderSet, job.ProviderSet, app.NewWeb))
|
||||
}
|
||||
|
||||
@@ -10,6 +10,7 @@ import (
|
||||
"github.com/TheTNB/panel/internal/app"
|
||||
"github.com/TheTNB/panel/internal/bootstrap"
|
||||
"github.com/TheTNB/panel/internal/data"
|
||||
"github.com/TheTNB/panel/internal/job"
|
||||
"github.com/TheTNB/panel/internal/route"
|
||||
"github.com/TheTNB/panel/internal/service"
|
||||
)
|
||||
@@ -94,7 +95,11 @@ func initWeb() (*app.Web, error) {
|
||||
return nil, err
|
||||
}
|
||||
gormigrate := bootstrap.NewMigrate(db)
|
||||
cron := bootstrap.NewCron(koanf, logger)
|
||||
jobs := job.NewJobs(db, logger, settingRepo, certRepo, backupRepo, cacheRepo)
|
||||
cron, err := bootstrap.NewCron(koanf, logger, jobs)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
validation := bootstrap.NewValidator(db)
|
||||
web := app.NewWeb(koanf, mux, server, gormigrate, cron, validation)
|
||||
return web, nil
|
||||
|
||||
1
go.sum
1
go.sum
@@ -63,6 +63,7 @@ github.com/google/gofuzz v1.2.0 h1:xRy4A+RhZaiKjJ1bPfwQ8sedCA+YS2YcCHW6ec7JMi0=
|
||||
github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
||||
github.com/google/pprof v0.0.0-20240409012703-83162a5b38cd h1:gbpYu9NMq8jhDVbvlGkMFWCjLFlqqEZjEmObmhUy6Vo=
|
||||
github.com/google/pprof v0.0.0-20240409012703-83162a5b38cd/go.mod h1:kf6iHlnVGwgKolg33glAes7Yg/8iWP8ukqeldJSO7jw=
|
||||
github.com/google/subcommands v1.2.0 h1:vWQspBTo2nEqTUFita5/KeEWlUL8kQObDFbub/EN9oE=
|
||||
github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk=
|
||||
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
|
||||
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package bootstrap
|
||||
|
||||
import (
|
||||
"github.com/TheTNB/panel/internal/job"
|
||||
"log/slog"
|
||||
|
||||
"github.com/knadh/koanf/v2"
|
||||
@@ -9,14 +10,19 @@ import (
|
||||
pkgcron "github.com/TheTNB/panel/pkg/cron"
|
||||
)
|
||||
|
||||
func NewCron(conf *koanf.Koanf, log *slog.Logger) *cron.Cron {
|
||||
func NewCron(conf *koanf.Koanf, log *slog.Logger, jobs *job.Jobs) (*cron.Cron, error) {
|
||||
logger := pkgcron.NewLogger(log, conf.Bool("app.debug"))
|
||||
|
||||
return cron.New(
|
||||
c := cron.New(
|
||||
cron.WithParser(cron.NewParser(
|
||||
cron.SecondOptional|cron.Minute|cron.Hour|cron.Dom|cron.Month|cron.Dow|cron.Descriptor,
|
||||
)),
|
||||
cron.WithLogger(logger),
|
||||
cron.WithChain(cron.Recover(logger), cron.SkipIfStillRunning(logger)),
|
||||
)
|
||||
if err := jobs.Register(c); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return c, nil
|
||||
}
|
||||
|
||||
@@ -70,7 +70,7 @@ func (r *taskRepo) Push(task *biz.Task) error {
|
||||
})
|
||||
}
|
||||
|
||||
// TODO fix
|
||||
// TODO 修复此功能
|
||||
func (r *taskRepo) DispatchWaiting() {
|
||||
// cli下不处理
|
||||
if app.IsCli {
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
package job
|
||||
|
||||
import (
|
||||
"github.com/robfig/cron/v3"
|
||||
)
|
||||
|
||||
// TODO fix me
|
||||
func Boot(c *cron.Cron) error {
|
||||
/*if _, err := c.AddJob("* * * * *", NewMonitoring()); err != nil {
|
||||
return err
|
||||
}
|
||||
if _, err := c.AddJob("0 4 * * *", NewCertRenew()); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if _, err := c.AddJob("0 2 * * *", NewPanelTask()); err != nil {
|
||||
return err
|
||||
}*/
|
||||
|
||||
return nil
|
||||
}
|
||||
46
internal/job/job.go
Normal file
46
internal/job/job.go
Normal file
@@ -0,0 +1,46 @@
|
||||
package job
|
||||
|
||||
import (
|
||||
"github.com/TheTNB/panel/internal/biz"
|
||||
"github.com/google/wire"
|
||||
"github.com/robfig/cron/v3"
|
||||
"gorm.io/gorm"
|
||||
"log/slog"
|
||||
)
|
||||
|
||||
var ProviderSet = wire.NewSet(NewJobs)
|
||||
|
||||
type Jobs struct {
|
||||
db *gorm.DB
|
||||
log *slog.Logger
|
||||
setting biz.SettingRepo
|
||||
cert biz.CertRepo
|
||||
backup biz.BackupRepo
|
||||
cache biz.CacheRepo
|
||||
}
|
||||
|
||||
func NewJobs(db *gorm.DB, log *slog.Logger, setting biz.SettingRepo, cert biz.CertRepo, backup biz.BackupRepo, cache biz.CacheRepo) *Jobs {
|
||||
return &Jobs{
|
||||
db: db,
|
||||
log: log,
|
||||
setting: setting,
|
||||
cert: cert,
|
||||
backup: backup,
|
||||
cache: cache,
|
||||
}
|
||||
}
|
||||
|
||||
func (r *Jobs) Register(c *cron.Cron) error {
|
||||
if _, err := c.AddJob("* * * * *", NewMonitoring(r.db, r.log, r.setting)); err != nil {
|
||||
return err
|
||||
}
|
||||
if _, err := c.AddJob("0 4 * * *", NewCertRenew(r.db, r.log, r.cert)); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if _, err := c.AddJob("0 2 * * *", NewPanelTask(r.db, r.log, r.backup, r.cache, r.setting)); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user