스케줄러라는 단어는 많은 분야에서 사용되지만 API에서는 특정 시간마다 일을 반복하도록 해주는 함수를 의미한다.
우선 스케줄러를 사용하기 위해서는 해당 모듈을 먼저 설치해줘야 한다.
sudo npm install node-schedule --save
로 스케줄러 모듈을 설치해준다.
cron-style 스케줄링은 다음과 같이 시간을 구성해준다.
8월 10일 오후 9시에 현재 시간을 콘솔에 출력하는 간단한 예를 구현해보았다.
schedule.scheduleJob('0 0 21 10 8 *', async function () {
let mNow = new Date();
console.log(mNow);
});
5초마다 현재 시간을 콘솔에 출력하는 간단한 예를 구현해보았다.
schedule.scheduleJob('*/5 * * * * *', async function () {
let mNow = new Date();
console.log("+ 5seconds ", nNow);
});
주의할 점은 시를 입력할 때 24시간을 기준으로 작성해야 한다는 것이다. 그리고 클라이언트에게 계속해서 데이터를 보내는 코드도 작성해 보았는데 다음과 같은 에러가 발생했다.
이는 클라이언트에게 데이터를 중복으로 보냈을 때 발생하는 에러라고 한다. 이 부분에 대해서는 조금 더 공부해봐야겠다.
rule 변수에 RecurrentRule 객체를 생성하고, rule 변수에 시간을 설정할 수 있다.
시간이 매번 30초 일때마다 그 시간을 콘솔에 출력하는 코드이다.
exports.getTest = async function(req, res){
let rule = new schedule.RecurrenceRule();
rule.second = 30;
let job = schedule.scheduleJob(rule, async function () {
let mNow = new Date();
console.log("30초 입니다. ", mNow);
});
}
취소는 매우 간단하다. 위에서 사용한 job 메소드에 cancel을 붙여주면 된다.
job.cancel();
스케줄링을 처음 공부하고 사용해보았다. 아직 미숙한 부분들에 대해서 더 알아갈 예정이다.