첫 번째 시작은 process에 tag를 다는 것입니다.
https://pkg.go.dev/github.com/go-co-op/gocron@v1.17.0#Scheduler.Tag
위의 사이트는 참고 사이트입니다.
Tag를 다는 방법은 아래와 같습니다.
loc, _ := time.LoadLocation("Asia/Seoul")
scheduler := gocron.NewScheduler(loc)
_, _ = scheduler.Every(40).Minutes().Tag("FirstJob").WaitForSchedule().Do(job 명, scheduler)
어떤 시간을 기준으로 할것인지를 하기 위해서 timezone도 서울로 지정을 했습니다.
현재 다국어 버전도 준비를 하고 있어서 향후에는 GMT 기준으로 수정할 가능성도 있어요.
위의 참고 소스를 보시면 정말 간단하죠?
secondJobs, _ := s.FindJobsByTag("SecondJob")
secondJob := secondJobs[0]
if secondJob.IsRunning() {
zaplogger.Info(fmt.Sprintf("%v", time.Now()) + " :Task명 ")
zaplogger.Info("이미 두번째 작업이 수행중입니다. 과도한 API 호출을 방지하기 위해 이번 작업은 진행하지 않습니다.")
} else if !secondJob.IsRunning() {
zaplogger.Info(fmt.Sprintf("%v", time.Now()) + " : 실행해야할 Task명")
zaplogger.Info("작업을 수행합니다... !!!!")
Job 실행
}
Tag를 이용해서 process가 구동중인지 아닌지를 판별해서 다음 job을 실행시키는 방법입니다.
[Go] Golang Post formData 보내는 방법 (0) | 2022.12.09 |
---|---|
[Go] 데이터 타입 체크 (0) | 2022.11.02 |
[GoLang] DB 작업 중, Null 처리에 대한 문제 해결 (0) | 2022.08.31 |
Zap과 file-rotatelogs 를 통한 Custom Logging (0) | 2022.08.30 |
Golang 의 DB관련 라이브러리 GORM (0) | 2022.08.30 |