본문 바로가기
Runtime/Node.js

24. 작업 스케줄러(Job Scheduler)

by 김엉배 2023. 4. 23.
728x90
반응형

 

1.  작업 스케줄러

  • 정해진 시간, 날짜, 간격으로 어떤 작업을 주기적으로 실행할 수 있도록 해 주는 프로그램
  • ex)
    - 데이터 백업: 정해진 주기로 데이터 백업
    - 정기 리포트 생성: 주기적으로 데이터베이스의 데이터를 기준으로 리포트를 생성하여 담당자에게 이메일을 전송
    - 일정 관리: 등록된 일정에 맞춰서 알림을 보냄

 

2.  node-cron 

  • node-cron 설치
npm install node-cron

 

  • 1분마다 작업이 실행되는 예제: 실행 시점이 기준이 아니라 시간 기준으로 매분마다 실행
const cron = require('node-cron');

cron.schedule('* * * * *', () => {
  console.log('1분마다 작업이 실행.');
})

 

 

3.  작업 스케줄 설정

 

  • 여러 개의 값을 설정해서 사용할 수 있는 예제
const cron = require('node-cron');

cron.schedule('1,2,4,5 * * * *', () => {
  console.log('매 시간의 1분, 2분, 4분 5분에 실행.'); // ex) 15:01, 15:02, 15:04
})

 

  • 시간 범위로 설정해서 사용할 수 있는 예제
const cron = require('node-cron');

cron.schedule('1-5  * * * *', () => {
  console.log('매 시간의 1분, 2분, 3분, 4분, 5분에 실행.');
});

 

  • 월과 요일에 대한 영문 이름으로 값을 설정할 수 있는 예제
const cron = require('node-cron');

cron.schedule('* * * January,September Sunday', () => {
  console.log('1월과 9월의 일요일에 실행.');
});

 

  • 매주 월요일 오전 9시에 작업을 실행하는 예제
const cron = require('node-cron');

cron.schedule('0 9 * * Monday', () => {
  console.log('매주 월요일 09:00에 실행.');
});

 

  • schedule() 함수
    - expression: 작업을 실행시킬 cron 표현식
    - function: 실행할 작업에 해당하는 함수
    - options: 설정 옵션 오브젝트
      ㄴ scheduled: 기본 값은 true, false로 설정할 경우 start() 함수를 호출해야 스케줄링이 시작됨
      ㄴ timezone: 타임존 기준 설정

 

 

4.  타임존 설정

  • 기존이 되는 타임존은 "Asisa/Seoul" 
const cron = require('node-cron');

cron.schedule('0 1 * * *', () => {
  console.log('매주 Asia/Seoul 타임존 기준으로 01:00마다 작업 실행');
}, {
  scheduled: true,
  timezone: "Asia/Seoul"
});

- 타임존 목록은 "https://momentjs.com/timezone/"에서 확인할 수 있다.

 

 

5.  ScheduledTask() 함수

  • start() : 실행 시점을 결정
const cron = require('node-cron');
const task = cron.schedule('* * * * *', () => {
  console.log('start() 함수 실행 후부터 매분마다 실행된다.');
}, {
  scheduled: false // start() 함수로 시작하기 전까지 작업이 실행되지 않음
});

task.start(); // 스케줄링 작업을 시작함

 

  • stop(): 스케줄링된 작업을 중지할 수 있다.
const cron = require('node-cron');
const task = cron.schedule('* * * * *', () => {
  console.log('매분마다 실행되는 작업이 stop() 함수 실행 후에는 중지가 됨.');
});

task.stop(); // 스케줄링된 작업을 종료시킴

 

  • destroy(): 스케줄링된 작업을 완전히 삭제할 수 있다.
const cron = require('node-cron');
const task = cron.schedule('* * * * *', () => {
  console.log('매분마다 실행되는 작업이 destroy() 함수 실행 후에는 완전히 삭제됨.');
});

task.stop(); // 스케줄링된 작업을 삭제함

 

  • validate(): 작업을 실행시킬 cron 표현식이 올바르게 작성되었는지를 검증해 주는 함수
var valid = cron.validate('59 * * * *'); // true
var invalid = cron.validate('60 * * * *'); // false, 1-59까지 사용할 수 있으므로
728x90
반응형