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

feat: 有任务运行则跳过自动更新

This commit is contained in:
耗子
2025-01-02 21:52:31 +08:00
parent d6b016d5e8
commit a573a6e44f
3 changed files with 12 additions and 4 deletions

View File

@@ -144,7 +144,7 @@ func initWeb() (*app.Web, error) {
return nil, err
}
gormigrate := bootstrap.NewMigrate(db)
jobs := job.NewJobs(db, logger, settingRepo, certRepo, backupRepo, cacheRepo)
jobs := job.NewJobs(db, logger, settingRepo, certRepo, backupRepo, cacheRepo, taskRepo)
cron, err := bootstrap.NewCron(koanf, logger, jobs)
if err != nil {
return nil, err

View File

@@ -19,9 +19,10 @@ type Jobs struct {
cert biz.CertRepo
backup biz.BackupRepo
cache biz.CacheRepo
task biz.TaskRepo
}
func NewJobs(db *gorm.DB, log *slog.Logger, setting biz.SettingRepo, cert biz.CertRepo, backup biz.BackupRepo, cache biz.CacheRepo) *Jobs {
func NewJobs(db *gorm.DB, log *slog.Logger, setting biz.SettingRepo, cert biz.CertRepo, backup biz.BackupRepo, cache biz.CacheRepo, task biz.TaskRepo) *Jobs {
return &Jobs{
db: db,
log: log,
@@ -29,6 +30,7 @@ func NewJobs(db *gorm.DB, log *slog.Logger, setting biz.SettingRepo, cert biz.Ce
cert: cert,
backup: backup,
cache: cache,
task: task,
}
}
@@ -40,7 +42,7 @@ func (r *Jobs) Register(c *cron.Cron) error {
return err
}
if _, err := c.AddJob("0 2 * * *", NewPanelTask(r.db, r.log, r.backup, r.cache, r.setting)); err != nil {
if _, err := c.AddJob("0 2 * * *", NewPanelTask(r.db, r.log, r.backup, r.cache, r.task, r.setting)); err != nil {
return err
}

View File

@@ -23,16 +23,18 @@ type PanelTask struct {
log *slog.Logger
backupRepo biz.BackupRepo
cacheRepo biz.CacheRepo
taskRepo biz.TaskRepo
settingRepo biz.SettingRepo
}
func NewPanelTask(db *gorm.DB, log *slog.Logger, backup biz.BackupRepo, cache biz.CacheRepo, setting biz.SettingRepo) *PanelTask {
func NewPanelTask(db *gorm.DB, log *slog.Logger, backup biz.BackupRepo, cache biz.CacheRepo, task biz.TaskRepo, setting biz.SettingRepo) *PanelTask {
return &PanelTask{
api: api.NewAPI(app.Version),
db: db,
log: log,
backupRepo: backup,
cacheRepo: cache,
taskRepo: task,
settingRepo: setting,
}
}
@@ -100,6 +102,10 @@ func (r *PanelTask) updateRewrites() {
// 更新面板
func (r *PanelTask) updatePanel() {
if r.taskRepo.HasRunningTask() {
return
}
// 加 300 秒确保在缓存更新后才更新面板
time.AfterFunc(time.Duration(rand.IntN(300))*time.Second+300*time.Second, func() {
panel, err := r.api.LatestVersion()