NodeJS를 이용하면서, 

작업을 반복적으로 특정시간에 처리할 수 있도록 해야할 때도 있는데요.

오늘은 그런경우에 node-schedule이라고 하는 라이브러리를 이용해서,

그와 같은 작업을 하는 방법에 대해서 정리해 보겠습니다.



1. node-shedule 설치


역시 npm에서 모듈을 설치하는 것부터 시작하겠습니다.


npm install node-schedule --save


그리고, 모듈을 이용하기 위해서 schedule이라고 하는 변수에,

모듈을 require해 줍니다.



이제 모듈을 사용할 준비는 다 되었구요.

아래에서 실제 스케쥴링을 해 보겠습니다.



2. Scheduling


node-schedule모듈은 Linux의 Cron스타일로, 스케쥴링을 할 수 있는데요.

아래와 같이 시간을 구성해 줍니다.

(https://github.com/node-schedule/node-schedule)


그럼 실제로 적용해 보겠습니다.

매일 9월 12일  오후6시 40분 3초에 시간을 logging하도록 해본다면, 

3 40 18 12 9 * 과 같이 표현할 수 있겠습니다.

(시간은 24시간제로 표현해줘야 한다는 것을 잊으면 않됩니다)


scheduleJob이라고 하는 메소드를 이용합니다.

시간을 첫번째 인자로 주고, 두번째 인자로는 callBack을 넣어주면 되구요.

(job이라는 변수에 담는 이유는, 추후에 cancel을 하기 위함입니다.)




그럼 이번에는 매 30초마다 실행하도록 해 보겠습니다.

주의할 점은 30초 간격이 아니라는 점 입니다.




이외에도 스케쥴을 설정하는 방법으로,

recurrence rules을 생성하는 방법도 있는데요.

rule변수에 RecurrentRule객체를 생성하구요.

roule.minute과 같이 값을 설정해 줄 수 있습니다.

(설정할 수 있는 값은 아래와 같은데요.

그런데 시간, 요일 등, 여러 값을 설정할 것이라면, Cron스타일이 더 적합할 것 같습니다.)

  • second
  • minute
  • hour 
  • date 
  • month
  • year
  • dayOfWeek

매 45분에 실행되도록 설정해 볼텐데요.

rule.minute = 45와 같이 해 주면됩니다.

위의 Cron스타일과 마찬가지로, scheduleJob메소드를 사용하구요.

첫번째 인자로 rule변수를 그리고 두번재 변수로 콜백을 넣어주면 됩니다.



아래와 같이 정상적으로 동작하는 것을 볼 수 있습니다.




3. 스케쥴 취소


설정해 놓았던 스케쥴을 취소하고자 하는 것은 간단한데요.

위에서 사용하였던 변수 job에 cancel 메소드를 사용해 주면 됩니다.


+ Recent posts