This repository has been archived on 2025-03-01. You can view files and clone it, but cannot push or open issues or pull requests.
trantor/lib/tasker.go

54 lines
1.5 KiB
Go
Raw Normal View History

2016-05-02 21:36:49 -04:00
package trantor
import (
2014-08-30 13:17:50 -05:00
log "github.com/cihub/seelog"
"time"
2014-08-30 13:17:50 -05:00
2016-05-02 21:36:49 -04:00
"gitlab.com/trantor/trantor/lib/database"
)
const (
minutesUpdateTags = 11
minutesUpdateVisited = 41
minutesUpdateDownloaded = 47
minutesUpdateHourlyV = 31
minutesUpdateDailyV = 60*12 + 7
minutesUpdateMonthlyV = 60*24 + 11
minutesUpdateHourlyD = 29
minutesUpdateDailyD = 60*12 + 13
minutesUpdateMontlyD = 60*24 + 17
minutesUpdateLogger = 5
)
func InitTasks(db *database.DB, loggerConfig string) {
updateLogger := func() error {
return UpdateLogger(loggerConfig)
}
periodicTask(updateLogger, minutesUpdateLogger*time.Minute)
periodicTask(db.UpdateTags, minutesUpdateTags*time.Minute)
periodicTask(db.UpdateMostVisited, minutesUpdateVisited*time.Minute)
periodicTask(db.UpdateDownloadedBooks, minutesUpdateDownloaded*time.Minute)
periodicTask(db.UpdateHourVisits, minutesUpdateHourlyV*time.Minute)
periodicTask(db.UpdateDayVisits, minutesUpdateDailyV*time.Minute)
periodicTask(db.UpdateMonthVisits, minutesUpdateMonthlyV*time.Minute)
periodicTask(db.UpdateHourDownloads, minutesUpdateHourlyD*time.Minute)
periodicTask(db.UpdateDayDownloads, minutesUpdateDailyD*time.Minute)
periodicTask(db.UpdateMonthDownloads, minutesUpdateMontlyD*time.Minute)
2014-02-11 11:02:22 +01:00
}
func periodicTask(task func() error, periodicity time.Duration) {
go tasker(task, periodicity)
}
2014-02-11 11:02:22 +01:00
func tasker(task func() error, periodicity time.Duration) {
for true {
time.Sleep(periodicity)
err := task()
if err != nil {
2014-02-11 13:13:43 +01:00
log.Error("Task error: ", err)
}
}
}