Node.js에서 Cron 작업 예약하기: node-cron 사용법
Node.js는 많은 개발자들이 선호하는 서버 사이드 자바스크립트 런타임입니다. Node.js를 사용하여 스케줄링 작업을 수행하려면, node-cron 라이브러리를 사용할 수 있습니다. node-cron은 Cron을 이용하여 작업을 예약하고 실행하는 것을 도와주는 라이브러리입니다. 이번 글에서는 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-cron은 Node.js에서 Cron 작업을 예약하고 실행하는 라이브러리입니다. cron.schedule() 메서드를 사용하여 Cron 표현식을 지정하고 작업을 예약할 수 있습니다. Cron 표현식은 분, 시간, 일, 월, 요일 등의 필드를 조합하여 작업을 예약하는데 사용됩니다. *, n, n-m, */n, n,m 등의 값을 사용하여 특정 시간, 간격, 범위, 목록 등의 작업을 예약할 수 있습니다. cron.schedule() 메서드가 반환하는 객체의 stop() 메서드를 호출하여 예약된 작업을 취소할 수 있습니다.