2
0
mirror of https://github.com/acepanel/panel.git synced 2026-02-04 11:27:17 +08:00

fix: jobs

This commit is contained in:
耗子
2024-12-15 23:16:08 +08:00
parent 2050a96dcf
commit 8116ea7767
7 changed files with 64 additions and 26 deletions

View File

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

View File

@@ -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
View File

@@ -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=

View File

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

View File

@@ -70,7 +70,7 @@ func (r *taskRepo) Push(task *biz.Task) error {
})
}
// TODO fix
// TODO 修复此功能
func (r *taskRepo) DispatchWaiting() {
// cli下不处理
if app.IsCli {

View File

@@ -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
View 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
}