[Node.js] node-schedule 모듈 (1), job scheduler(배치잡)

2017. 12. 18. 22:41Information Technology/Node.js



node-schedule 모듈은 유용한 Job scheduler 외부 모듈입니다. 이 모듈을 통해서 특정 날짜 및 시간에 scheduled job을 실행 할 수 있습니다. 그리고 해당 Job을 한번 또는 반복으로 설정해서 사용할 수 있습니다. 또한 interval-bases scheduling이 아닌 time-based scheduling 입니다.

이전에 79. 정기적으로 실행하기, setInterval(fn, milsec) 에서 setInterval()에 대해서 배웠습니다. setInverval 는 설정된 주기 마다 특정 함수가 실행이 됩니다. 반면 node-schedule모듈은 예를들어 특정 시간 30분 또는 1720분 등과 같이 특정 시간에 실행되야 할때 사용 하는 것이 더 적합 합니다.

 

참고 : 만약에 어떤 schedule job script가 실행되지 않을때 도 지속되어야 한다면 node-cron 모듈을 사용하는 걸 고려 하는게 좋습니다. (https://github.com/kelektiv/node-cron)

 

우선 아래의 명령어를 통해서 node-schedule 모듈을 설치합니다.

npm install node-schedule


 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

const schedule = require('node-schedule');

 

// 특정시간에 한번

// 2017 12 16 오후 19 27분에 수행할 작업

const date = new Date(2017, 11, 16, 19, 27, 0);

 

// 2017-12-16T10:27:00.000Z (GMT 0 기준)

console.log(date);

 

const j = schedule.scheduleJob(date, () => {

  console.log('no pain, no gain');

});

 

// 매시간마다 한번

const rule = new schedule.RecurrenceRule();

rule.minute = 32;

 

const k = schedule.scheduleJob(rule, () => {

  console.log('Laziness is nothing more than the habit of resting before you get tired.');

});

 

// 작업 취소

// j.cancel();

// k.cancel();


 

// 특정시간에 한번

// 2017 12 16 오후 19 27분에 수행할 작업

const date = new Date(2017, 11, 16, 19, 27, 0);

 

// 2017-12-16T10:27:00.000Z (GMT 0 기준)

console.log(date);

 

const j = schedule.scheduleJob(date, () => {

  console.log('no pain, no gain');

});

 

schedule.scheduleJob()date객체의 특정시간을 전달한다.

 

// 매시간마다 한번

const rule = new schedule.RecurrenceRule();

rule.minute = 17;

 

const k = schedule.scheduleJob(rule, () => {

  console.log('Laziness is nothing more than the habit of resting before you get tired.');

});

 

매시간 17분마다 해당 job을 실행하기 위해 RecurrenceRule()객체 인스턴스를 생성해서

schedule.scheduleJob()에 전달한다.

또한 j.cancel(); 를 통해서 작업 취소를 할 수 있다.

 

해당 소스코드를 데스크탑에 시간에 맞춰 수정한 후 실습해 보면 console창에 해당 문구들이 출력 된다.

참고 사이트 : https://github.com/node-schedule/node-schedule 



Never be entirely idle, but either be reading, or writing, or praying or meditating or endeavoring something for the public good.

by Thomas a Kempis

 

오디오, 음악회, 마이크, 마이크로폰, 음악, 성능, 보기, 노래, 가수, 소리, 무대, 보컬