티스토리 뷰

IT 한스푼

Node.js에서 Cron 작업 예약하기: node-cron 사용법

예술하는 개발자 최씨 2023. 4. 5. 14:20
반응형

 

Node.js는 많은 개발자들이 선호하는 서버 사이드 자바스크립트 런타임입니다. Node.js를 사용하여 스케줄링 작업을 수행하려면, node-cron 라이브러리를 사용할 수 있습니다. node-cronCron을 이용하여 작업을 예약하고 실행하는 것을 도와주는 라이브러리입니다. 이번 글에서는 node-cron을 사용하는 방법에 대해 알아보겠습니다.

 

1. node-cron 설치하기

node-cron을 사용하기 위해서는 우선 npm을 통해 라이브러리를 설치해야 합니다. 다음 명령어를 사용하여 설치할 수 있습니다.

npm install --save node-cron

 

2. 예제 코드 작성하기

node-cron을 사용하기 위해서는 예약하려는 작업을 실행할 함수를 작성해야 합니다. 예를 들어, "Hello, world!"를 출력하는 함수를 작성해보겠습니다.

function sayHello() {
  console.log("Hello, world!");
}

 

이제 node-cron을 사용하여 이 함수를 1분마다 실행해보겠습니다. 다음 코드를 작성합니다.

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

cron.schedule("* * * * *", function() {
  sayHello();
});

 

이제 위 코드를 실행하면, 매 분마다 "Hello, world!"가 출력됩니다. Cron의 시간 설정 표현식(* * * * *)은 분, 시간, , , 요일을 나타내며, 각각의 필드는 다음과 같은 의미를 가집니다.

: 0부터 59까지의 정수

시간: 0부터 23까지의 정수

: 1부터 31까지의 정수

: 1부터 12까지의 정수 또는 JAN부터 DEC까지의 문자열

요일: 0부터 6까지의 정수 또는 SUN부터 SAT까지의 문자열

 

3. Cron 표현식 자세히 알아보기

위 예제 코드에서도 언급한 것처럼, Cron 표현식을 사용하여 작업을 예약하고 실행할 수 있습니다. Cron 표현식은 다음과 같은 형식으로 이루어져 있습니다.

*     *     *     *     *
┬     ┬     ┬     ┬     ┬
│     │     │     │     │
│     │     │     │     └───── 요일 (0 - 6) (0이나 7이면 SUN)
│     │     │     └────────── 월 (1 - 12)
│     │     └─────────────── 일 (1 - 31)
│     └──────────────────── 시간 (0 - 23)
└───────────────────────── 분 (0 - 59)

 

위 예제 코드에서 사용한 "* * * * *"은 매 분마다 실행하라는 것을 의미합니다. 여기서 사용할 수 있는 값의 종류와 의미는 다음과 같습니다.

*: 모든 값. 예를 들어, 분 필드가 *이면 매 분마다 실행합니다.

n: 숫자 값. 예를 들어, 분 필드가 5이면 5분마다 실행합니다.

n-m: 범위 값. 예를 들어, 분 필드가 5-10이면 5, 6, 7, 8, 9, 10분마다 실행합니다.

*/n: 간격 값. 예를 들어, 분 필드가 */5이면 5분 간격으로 실행합니다.

n,m: 목록 값. 예를 들어, 분 필드가 5,10,15이면 5, 10, 15분마다 실행합니다.

Cron 표현식 예제

다음은 Cron 표현식을 사용하여 작업을 예약하는 예제 코드입니다.

 

1) 특정 시간에 작업 예약하기

// 2023년 4월 5일 12시 30분에 실행
cron.schedule("30 12 5 4 * 2023", function() {
  console.log("Hello, world!");
});

 

2) 특정 시간 범위에 작업 예약하기

// 9시부터 17시까지 30분 간격으로 실행
cron.schedule("*/30 9-17 * * *", function() {
  console.log("Hello, world!");
});

 

3) 스케줄링 작업 취소하기

node-cron을 사용하여 예약된 작업을 취소하려면 cron.schedule() 메서드가 반환하는 객체의 stop() 메서드를 호출하면 됩니다. 예를 들어, 다음 코드는 1분마다 실행되는 작업을 예약하고, 5분 후에 작업을 취소합니다.

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

const task = cron.schedule("* * * * *", function() {
  console.log("Hello, world!");
});

setTimeout(function() {
  task.stop();
  console.log("Task stopped.");
}, 5 * 60 * 1000);

 

4. 정리

node-cronNode.js에서 Cron 작업을 예약하고 실행하는 라이브러리입니다. cron.schedule() 메서드를 사용하여 Cron 표현식을 지정하고 작업을 예약할 수 있습니다. Cron 표현식은 분, 시간, , , 요일 등의 필드를 조합하여 작업을 예약하는데 사용됩니다. *, n, n-m, */n, n,m 등의 값을 사용하여 특정 시간, 간격, 범위, 목록 등의 작업을 예약할 수 있습니다. cron.schedule() 메서드가 반환하는 객체의 stop() 메서드를 호출하여 예약된 작업을 취소할 수 있습니다.

반응형
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
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
글 보관함