mirror of
https://github.com/acepanel/panel.git
synced 2026-02-04 18:27:13 +08:00
feat: 有任务运行则跳过自动更新
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user