본문 바로가기
Developer/Node.js

Node.js node-cron 을 사용한 스케줄러 설정 방법

by 김씩씩 2021. 4. 15.

Node.js node-cron 을 사용한 스케줄러 설정 방법

 

Cron은 어떠한 작업을 고정된 시간, 날짜, 간격에 주기적으로 실행할 수 있도록 스케줄링 하기위한 Unix 계열 컴퓨터 운영 체제의 시간 기반 잡 스케줄러 입니다.

Node.js 에서는 node-cron 이라는 모듈을 사용하여 Cron을 사용하실 수 있습니다.

그럼 Node.js 에서 node-cron 사용 방법을 알려드리도록 하겠습니다.

 

1. node-cron 모듈 설치

npm install node-cron

위 명령어를 사용하여 node-cron 모듈을 설치합니다.

 

2. node-cron 사용 방법

node-cron 모듈을 설치하였으니 이제 node.js 코드를 작성하여 사용하시면 되겠습니다.

먼저 주요 node-cron 의 주요 Method 들로 사용방법을 알려드리도록 하겠습니다!

또한 정말 중요한 실행 주기 설정은 사용 방법 설명 뒤에 작성 해두었습니다!

2-1. node-cron import

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

먼저 설치한 node-cron 모듈을 require로 가져옵니다.

 

2-2. schedule

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

cron.schedule('* * * * *', function () {
  console.log('매 분 마다 작업 실행');
});

schedule() 스케줄러를 설정하고 바로 시작할 수 있습니다.

첫번째 인자로 실행 주기를 입력하고,

두번째 인자로 콜백 함수, 즉 실행할 작업을 입력하시면 됩니다.

 

2-3. start

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

var task = cron.schedule('* * * * *', function () {
  console.log('매 분 마다 작업 실행');
}, {
  scheduled: false
});

task.start();

schedule() 로 바로 시작할 수도 있지만,

위 코드와 같이 자동 스케줄 시작 옵션(scheduled)을 false로 설정한 뒤, start() 로 실행하실 수도 있습니다.

 

2-4. stop

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

var task = cron.schedule('* * * * *', function () {
  console.log('매 분 마다 작업 실행');
});

task.stop();

stop() 을 사용하여 작업을 중지시킬 수 있습니다.

다시 시작시키기 전에는 작업이 실행되지 않습니다.

 

2-5. destory

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

var task = cron.schedule('* * * * *', function () {
  console.log('매 분 마다 작업 실행');
});

task.destroy();

destory() 을 사용하여 작업을 아예 삭제시킬 수 있습니다.

destory 한 작업은 다시 실행하실 수 없습니다.

 

2-6. validate

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

var valid = cron.validate('59 * * * *');
var invalid = cron.validate('60 * * * *');

console.log(valid);
console.log(invalid);

// Output : 
// ture
// false

validate 를 사용하여 작성한 실행주기가 유효한지 확인할 수 있습니다.

 

3. node-cron 실행 주기 설정 방법

그럼 정말 중요한 실행 주기를 설정하는 방법을 간단하게 알려드리도록 하겠습니다.

cron이 익숙하신 분이라면 바로 알아보시리라 생각합니다!

 

node-cron 실행 주기 (출처 : https://www.npmjs.com/package/node-cron)

node-cron 의 실행 주기 입력 방법입니다.

기본적으로 입력 자리 5개를 사용하여 실행 주기를 입력하고 초단위로 실행 주기를 설정하고 싶으시다면 6개를 사용하시면 됩니다. 

 

이해가 쉽도록 예시를 몇가지 작성 해드리도록 하겠습니다.

 

매 분 마다 작업 실행

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

cron.schedule('* * * * *', function () {
  console.log('매 분 마다 작업 실행 :', new Date().toString());
});

// Output
// 매 분 마다 작업 실행 : Wed Apr 14 2021 00:01:00 GMT+0900 (대한민국 표준시)
// 매 분 마다 작업 실행 : Wed Apr 14 2021 00:02:00 GMT+0900 (대한민국 표준시)
// 매 분 마다 작업 실행 : Wed Apr 14 2021 00:03:00 GMT+0900 (대한민국 표준시)
// 매 분 마다 작업 실행 : Wed Apr 14 2021 00:04:00 GMT+0900 (대한민국 표준시)
// 매 분 마다 작업 실행 : Wed Apr 14 2021 00:05:00 GMT+0900 (대한민국 표준시)

 

2분 마다 작업 실행

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

cron.schedule('*/2 * * * *', function () {
  console.log('2분 마다 작업 실행 :', new Date().toString());
});

// Output
// 2분 마다 작업 실행 : Wed Apr 14 2021 00:06:00 GMT+0900 (대한민국 표준시)
// 2분 마다 작업 실행 : Wed Apr 14 2021 00:08:00 GMT+0900 (대한민국 표준시)
// 2분 마다 작업 실행 : Wed Apr 14 2021 00:10:00 GMT+0900 (대한민국 표준시)
// 2분 마다 작업 실행 : Wed Apr 14 2021 00:12:00 GMT+0900 (대한민국 표준시)
// 2분 마다 작업 실행 : Wed Apr 14 2021 00:14:00 GMT+0900 (대한민국 표준시)

 

매 초마다 작업 실행

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

cron.schedule('* * * * * *', function () {
  console.log('매 초 마다 작업 실행 :', new Date().toString());
});

// Output
// 매 초 마다 작업 실행 : Wed Apr 14 2021 00:01:00 GMT+0900 (대한민국 표준시)
// 매 초 마다 작업 실행 : Wed Apr 14 2021 00:01:01 GMT+0900 (대한민국 표준시)
// 매 초 마다 작업 실행 : Wed Apr 14 2021 00:01:02 GMT+0900 (대한민국 표준시)
// 매 초 마다 작업 실행 : Wed Apr 14 2021 00:01:03 GMT+0900 (대한민국 표준시)
// 매 초 마다 작업 실행 : Wed Apr 14 2021 00:01:04 GMT+0900 (대한민국 표준시)

※ 실행 주기 입력 자리가 6개인 것을 잘 보시기 바랍니다!

 

지정 시간마다 작업 실행

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

cron.schedule('1,2,3 * * * *', function () {
  console.log('매 1분, 2분, 3분에 작업 실행 :', new Date().toString());
});

// Output
// 매 1분, 2분, 3분에 작업 실행 : Wed Apr 14 2021 00:01:00 GMT+0900 (대한민국 표준시)
// 매 1분, 2분, 3분에 작업 실행 : Wed Apr 14 2021 00:02:00 GMT+0900 (대한민국 표준시)
// 매 1분, 2분, 3분에 작업 실행 : Wed Apr 14 2021 00:03:00 GMT+0900 (대한민국 표준시)
// 매 1분, 2분, 3분에 작업 실행 : Wed Apr 14 2021 01:01:00 GMT+0900 (대한민국 표준시)
// 매 1분, 2분, 3분에 마다 작업 실행 : Wed Apr 14 2021 01:02:00 GMT+0900 (대한민국 표준시)

 

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

cron.schedule('1-4 * * * *', function () {
  console.log('매 1분, 2분, 3분, 4분에 작업 실행 :', new Date().toString());
});

// Output
// 매 1분, 2분, 3분, 4분에 작업 실행 : Wed Apr 14 2021 00:01:00 GMT+0900 (대한민국 표준시)
// 매 1분, 2분, 3분, 4분에 작업 실행 : Wed Apr 14 2021 00:02:00 GMT+0900 (대한민국 표준시)
// 매 1분, 2분, 3분, 4분에 작업 실행 : Wed Apr 14 2021 00:03:00 GMT+0900 (대한민국 표준시)
// 매 1분, 2분, 3분, 4분에 작업 실행 : Wed Apr 14 2021 00:04:00 GMT+0900 (대한민국 표준시)
// 매 1분, 2분, 3분, 4분에 마다 작업 실행 : Wed Apr 14 2021 01:01:00 GMT+0900 (대한민국 표준시)

※ 앞서 설명한 몇 분 마다 실행하는 것이 아닌, 각 시간의 지정 분 마다 실행되는 차이점에 주의해주시기 바랍니다!

 

작성 방법을 어느정도 이해하시면 그 다음부터는 수월하게 사용 가능 하시리라 생각됩니다!

 

이상으로 node-cron 사용 방법 설명을 마치도록 하겠습니다.

 

 

도움이 되셨다면 공감, 댓글 부탁드립니다!

궁금하신 점이나 요청사항은 언제든지 말씀해주세요!

피드백도 언제나 환영입니다!

 

감사합니다.

 


댓글