service/library/contentaudit/imageaudit/taskscheduler.go

45 lines
915 B
Go

package imageaudit
import (
"fmt"
"service/library/configcenter"
"time"
)
var defaultImageAuditTaskScheduler *ImageAuditTaskScheduler
// 图像审核任务调度器
type ImageAuditTaskScheduler struct {
// 同步标志
batchFlag chan bool // 批处理同步标志
// 状态记录
batchId string // 当前批次号
}
func initScheduler(cfg *configcenter.ImageAuditConfig) {
defaultImageAuditTaskScheduler = &ImageAuditTaskScheduler{
batchFlag: make(chan bool, 1),
batchId: genereteBatchId(),
}
defaultImageAuditTaskScheduler.batchFlag <- true
}
// 批处理上锁
func (s *ImageAuditTaskScheduler) lock() {
<-s.batchFlag
}
// 批处理解锁
func (s *ImageAuditTaskScheduler) unLock() {
s.batchFlag <- true
}
// 生成批次号
func genereteBatchId() string {
now := time.Now()
y, m, d := now.Date()
h, mi, s := now.Clock()
return fmt.Sprintf("%d%2d%2d%2d%2d%02d", y, m, d, h, mi, s)
}