调整任务

dev
truthhun 7 months ago
parent ecac2044f5
commit 0aed3e5e6a

@ -145,10 +145,6 @@ func NewDBModel(cfg *conf.Database, lg *zap.Logger) (m *DBModel, err error) {
}
m.tableFieldsMap[table] = filedsMap
}
go m.loopCovertDocument()
go m.cronUpdateSitemap()
go m.cronMarkAttachmentDeleted()
go m.cronCleanInvalidAttachment()
return
}
@ -194,6 +190,13 @@ func (m *DBModel) SyncDB() (err error) {
return
}
func (m *DBModel) RunTasks() {
go m.loopCovertDocument()
go m.cronUpdateSitemap()
go m.cronMarkAttachmentDeleted()
go m.cronCleanInvalidAttachment()
}
func (m *DBModel) GetDB() *gorm.DB {
return m.db
}

@ -166,15 +166,15 @@ func (m *DBModel) cronUpdateSitemap() {
for {
hour, _ := strconv.Atoi(os.Getenv("MOREDOC_UPDATE_SITEMAP_HOUR")) // 默认为每天凌晨0点更新站点地图
hour = hour % 24
m.logger.Info("cronUpdateSitemap", zap.Int("hour", hour), zap.String("lastUpdated", lastUpdated))
m.logger.Debug("cronUpdateSitemap", zap.Int("hour", hour), zap.String("lastUpdated", lastUpdated))
now := time.Now()
if now.Hour() == hour && now.Format(layout) != lastUpdated {
m.logger.Info("cronUpdateSitemapstart...")
m.logger.Debug("cronUpdateSitemapstart...")
err := m.UpdateSitemap()
if err != nil {
m.logger.Info("cronUpdateSitemapend...", zap.Error(err))
m.logger.Debug("cronUpdateSitemapend...", zap.Error(err))
}
m.logger.Info("cronUpdateSitemapend...")
m.logger.Debug("cronUpdateSitemapend...")
lastUpdated = now.Format(layout)
}
time.Sleep(1 * time.Minute)
@ -190,7 +190,7 @@ func (m *DBModel) cronCleanInvalidAttachment() {
sleepDuration := 1 * time.Minute
for {
time.Sleep(1 * time.Second)
m.logger.Info("cronCleanInvalidAttachmentstart...")
m.logger.Debug("cronCleanInvalidAttachmentstart...")
var (
deletedAttachemnts, attachemnts []Attachment
hashes []string
@ -206,7 +206,7 @@ func (m *DBModel) cronCleanInvalidAttachment() {
// 1. 找出已被标记删除的附件
m.db.Unscoped().Where("deleted_at IS NOT NULL").Where("deleted_at < ?", time.Now().Add(-time.Duration(retentionMinute)*time.Minute)).Limit(100).Find(&deletedAttachemnts)
if len(deletedAttachemnts) == 0 {
m.logger.Info("cronCleanInvalidAttachmentend...")
m.logger.Debug("cronCleanInvalidAttachmentend...")
time.Sleep(sleepDuration)
continue
}
@ -226,10 +226,10 @@ func (m *DBModel) cronCleanInvalidAttachment() {
err := m.db.Unscoped().Where("id IN (?)", ids).Delete(&Attachment{}).Error
if err != nil {
m.logger.Error("cronCleanInvalidAttachment", zap.Error(err))
m.logger.Info("cronCleanInvalidAttachmentend...")
m.logger.Debug("cronCleanInvalidAttachmentend...")
continue
}
m.logger.Info("cronCleanInvalidAttachment", zap.Any("ids", ids), zap.Any("Attachemnts", deletedAttachemnts))
m.logger.Debug("cronCleanInvalidAttachment", zap.Any("ids", ids), zap.Any("Attachemnts", deletedAttachemnts))
for _, attachemnt := range deletedAttachemnts {
if _, ok := hashMap[attachemnt.Hash]; !ok { // 删除附件文件
m.logger.Debug("cronCleanInvalidAttachment", zap.String("path", attachemnt.Path), zap.Any("attachemnt", attachemnt))
@ -247,7 +247,7 @@ func (m *DBModel) cronCleanInvalidAttachment() {
}
}
}
m.logger.Info("cronCleanInvalidAttachmentend...")
m.logger.Debug("cronCleanInvalidAttachmentend...")
}
}
@ -294,12 +294,12 @@ func (m *DBModel) cronMarkAttachmentDeleted() {
}
// 非配置类和横幅类附件如果type_id为0则表示未被使用超过24小时则标记删除
m.logger.Info("cronMarkAttachmentDeleted start...")
m.logger.Debug("cronMarkAttachmentDeleted start...")
err := m.db.Where("`type` not in (?) and type_id = ?", []int{AttachmentTypeConfig, AttachmentTypeBanner}, 0).Where("created_at < ?", time.Now().Add(-time.Duration(24)*time.Hour)).Delete(&Attachment{}).Error
if err != nil {
m.logger.Error("cronMarkAttachmentDeleted", zap.Error(err))
}
m.logger.Info("cronMarkAttachmentDeleted end...")
m.logger.Debug("cronMarkAttachmentDeleted end...")
}
}
@ -314,11 +314,12 @@ func (m *DBModel) loopCovertDocument() {
m.db.Model(&Document{}).Where("status = ?", DocumentStatusConverting).Update("status", DocumentStatusPending)
for {
now := time.Now()
m.logger.Info("loopCovertDocumentstart...")
m.logger.Debug("loopCovertDocumentstart...")
err := m.ConvertDocument()
if err != nil && err != gorm.ErrRecordNotFound {
m.logger.Info("loopCovertDocumentend...", zap.Error(err), zap.String("cost", time.Since(now).String()))
m.logger.Error("loopCovertDocument", zap.Error(err))
}
m.logger.Debug("loopCovertDocumentend...", zap.String("cost", time.Since(now).String()))
if err == gorm.ErrRecordNotFound {
time.Sleep(sleep)
}

@ -60,6 +60,7 @@ func Run(cfg *conf.Config, logger *zap.Logger) {
// 每次启动时都对dist中的title进行一次处理以替换掉关键字 moredoc
go dbModel.InitSEO()
dbModel.RunTasks()
if cfg.Level != "debug" {
gin.SetMode(gin.ReleaseMode)

Loading…
Cancel
Save