[ Node.js ] Node.js 스케줄링

황승환·2021년 8월 10일
0

Node.js

목록 보기
13/13

Scheduler

스케줄러라는 단어는 많은 분야에서 사용되지만 API에서는 특정 시간마다 일을 반복하도록 해주는 함수를 의미한다.

우선 스케줄러를 사용하기 위해서는 해당 모듈을 먼저 설치해줘야 한다.
sudo npm install node-schedule --save로 스케줄러 모듈을 설치해준다.

Cron-style Scheduling

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시간을 기준으로 작성해야 한다는 것이다. 그리고 클라이언트에게 계속해서 데이터를 보내는 코드도 작성해 보았는데 다음과 같은 에러가 발생했다.
이는 클라이언트에게 데이터를 중복으로 보냈을 때 발생하는 에러라고 한다. 이 부분에 대해서는 조금 더 공부해봐야겠다.

Recurrence rules scheduling

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();

스케줄링을 처음 공부하고 사용해보았다. 아직 미숙한 부분들에 대해서 더 알아갈 예정이다.

profile
꾸준함을 꿈꾸는 SW 전공 학부생의 개발 일기

0개의 댓글