28 lines
799 B
Go
28 lines
799 B
Go
package scheduler
|
|
|
|
import (
|
|
"kenaito-conf/server/internal/dao"
|
|
"kenaito-conf/server/internal/logger"
|
|
"kenaito-conf/server/internal/model"
|
|
"time"
|
|
)
|
|
|
|
func Start() {
|
|
go func() {
|
|
ticker := time.NewTicker(1 * time.Minute)
|
|
defer ticker.Stop()
|
|
for range ticker.C {
|
|
fiveMinutesAgo := time.Now().Add(-5 * time.Minute)
|
|
affected, err := dao.Engine.Where("last_ping_at < ?", fiveMinutesAgo).Delete(&model.ClientInstance{})
|
|
if err != nil {
|
|
logger.SugaredLogger.Errorf("[scheduler] cleanup expired client instances error: %v", err)
|
|
continue
|
|
}
|
|
if affected > 0 {
|
|
logger.SugaredLogger.Infof("[scheduler] cleaned up %d expired client instance(s)", affected)
|
|
}
|
|
}
|
|
}()
|
|
logger.SugaredLogger.Info("[scheduler] client instance cleanup task started, interval: 1m, expire: 5m")
|
|
}
|