관리 메뉴

JIHYUN JEONG

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

Information Technology/Node.js

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

StopHyun 2018. 1. 3. 23:27

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

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

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

// Cron-style Scheduling

// *     *     *     *     *     *

//                     

//                     |

//                      day of week (0 - 7) (0 or 7 is Sun)

//                 └───── month (1 - 12)

//             └────────── day of month (1 - 31)

//         └─────────────── hour (0 - 23)

//     └──────────────────── minute (0 - 59)

// └───────────────────────── second (0 - 59, OPTIONAL)

 

// Runs every weekday (Monday through Friday)

// at 11:30:00 AM.

const j = schedule.scheduleJob('00 30 11 * * 1-5', () => {

  console.log('Cron-style Scheduling');

});

 

// Recurrence Rule Scheduling 

// 0 - Sunday ~ 6 - Saturday

// 월요일부터 일요일까지 17 17분에 실행될 스케줄링

const rule = new schedule.RecurrenceRule();

rule.dayOfWeek = [0, new schedule.Range(0, 6)];

rule.hour = 17;

rule.minute = 17;

 

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

  console.log('Recurrence Rule Scheduling');

});

 

// 작업취소

// j.cancel();

// k.cancel();

 

// Object Literal Syntax

// 0 - Sunday ~ 6 - Saturday

// every Saturday at 21:10

const l = schedule.scheduleJob({ hour: 21, minute: 10, dayOfWeek: 6 }, () => {

  console.log('Object Literal Syntax');

});

 

// Set StartTime and EndTime

const startTime = new Date(Date.now() + 5000);

const endTime = new Date(startTime.getTime() + 5000);

const m = schedule.scheduleJob({ start: startTime, end: endTime, rule: '*/1 * * * * *' }, 

() => {

  console.log('Set StartTime and EndTime');

});

 


이번에는 주기적으로 반복 되는 작업에 대해서 배워보도록 하겠습니다.

 

// Runs every weekday (Monday through Friday)

// at 11:30:00 AM.

const j = schedule.scheduleJob('00 30 11 * * 1-5', () => {

  console.log('Cron-style Scheduling');

});

 



cron 모듈 스타일로 작성된 매주 월~1130분에 실행되는 작업 입니다.

 

// Recurrence Rule Scheduling 

// 0 - Sunday ~ 6 - Saturday

// 월요일부터 일요일까지 17 17분에 실행될 스케줄링

const rule = new schedule.RecurrenceRule();

rule.dayOfWeek = [0, new schedule.Range(0, 6)];

rule.hour = 17;

rule.minute = 17;

 

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

  console.log('Recurrence Rule Scheduling');

});

 



월요일 ~ 일요일까지 1717분에 실행을 할려면 RecurrenceRule 객체 인스턴스 생성 후 dayOfWeek 속송에 해당 요일를 전달합니다. 그리고 Range()를 통해 범위를 지정합니다.

 

// Object Literal Syntax

// 0 - Sunday ~ 6 - Saturday

// every Saturday at 21:10

const l = schedule.scheduleJob({ hour: 21, minute: 10, dayOfWeek: 6 }, () => {

  console.log('Object Literal Syntax');

});



해당 부분은 보다 손 쉽게 scheduling 설정하는 방법입니다.

 

// Set StartTime and EndTime

const startTime = new Date(Date.now() + 5000);

const endTime = new Date(startTime.getTime() + 5000);

const m = schedule.scheduleJob({ start: startTime, end: endTime, rule: '*/1 * * * * *' }, 

() => {

  console.log('Set StartTime and EndTime');

});



그리고 시작시간과 종료시간도 위와 같이 설정 할 수 있습니다.

 



추가 더 많은 기능을 확인 하고 싶으면 아래 URL을 참고하시기 바랍니다.

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







나는 연습에서든 실전에서든 이기기 위해 농구를 한다. 그 어떤 것도 승리를 향한 나의 경쟁적 열정에 방해가 되도록 하지 않을 것이다.

I play to win, whether during practice or a real game. And I will not let anything get in the way of me and my competitive enthusiasm to win.

- 마이클 조던 -


Comments