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 메소드를 사용해 주면 됩니다.
'NodeJS' 카테고리의 다른 글
NodeJS ErrorCode 정리 (0) | 2019.03.31 |
---|---|
NodeJS에서 활용하는 process.env (1) | 2019.03.26 |
NodeJS에서 사용하는 Logging모듈 Winston (0) | 2018.04.03 |
NodeJS 에서 Crash 후 재시작에 필요한 PM2 (0) | 2017.10.23 |
NodeJS에서 module.exports 사용하여 routing하기 (0) | 2017.08.12 |