Implement immediate deployment, and automatically load scheduled tasks when the service starts.

This commit is contained in:
yoan
2024-08-21 16:34:28 +08:00
parent 90967fc2e1
commit f6760515e9
16 changed files with 539 additions and 238 deletions

View File

@@ -62,7 +62,7 @@ func update(ctx context.Context, record *models.Record) error {
app.GetApp().Logger().Error("update cron job failed", "err", err)
return fmt.Errorf("update cron job failed: %w", err)
}
app.GetApp().Logger().Error("update cron job failed", "domain", record.GetString("domain"))
app.GetApp().Logger().Info("update cron job success", "domain", record.GetString("domain"))
scheduler.Start()
return nil

32
internal/domains/init.go Normal file
View File

@@ -0,0 +1,32 @@
package domains
import (
"certimate/internal/utils/app"
"context"
)
func InitSchedule() {
// 查询所有启用的域名
records, err := app.GetApp().Dao().FindRecordsByFilter("domains", "enabled=true", "-id", 500, 0)
if err != nil {
app.GetApp().Logger().Error("查询所有启用的域名失败", "err", err)
return
}
// 加入到定时任务
for _, record := range records {
if err := app.GetScheduler().Add(record.Id, record.GetString("crontab"), func() {
if err := deploy(context.Background(), record); err != nil {
app.GetApp().Logger().Error("部署失败", "err", err)
return
}
}); err != nil {
app.GetApp().Logger().Error("加入到定时任务失败", "err", err)
}
}
// 启动定时任务
app.GetScheduler().Start()
app.GetApp().Logger().Info("定时任务启动成功", "total", app.GetScheduler().Total())
}