01. cron
- Cron은 일정한 간격 또는 특정 시간에 주기적으로 작업을 실행하기 위해 사용되는 시간 기반 스케줄링 도구를 의미한다.
- 주로 리눅스와 유닉스 시스템에서 많이 사용된다.
- Cron 테이블 또는 Cron 작업으로 알려진 스케줄 테이블에 기반하여 작업을 예약. 이 테이블은 사용자가 지정한 작업과 실행 시간을 저장하는 텍스트 파일이다.
- Node.js에서는 node-cron이라는 npm 패키지를 사용하여 cron 작업을 구현할 수 있다.
02. node-cron
- node-cron은 Node.js에서 cron 작업을 예약하고 실행할 수 있도록 도와주는 npm 패키지.
1. 패키지 설치
npm install node-cron
2. 설치 완료 후 node-cron 모듈 가져오기
const cron = require('node-cron');
3. cron 작업을 예약하기 위해 cron.schedule() 메서드 사용
cron.schedule('* * * * *', () => {
console.log('매분마다 실행되는 작업');
});
==> 시간 설정
4. 구현 방법
- 현재 진행하고 있는 프로젝트에 파일에 schedule 코드를 추가로 작성하기.
==> 배포 환경에서 실해시키고 있는 파일에 코드를 추가하면 된다. - 파일 분리를 통해 따로 schedule 관리하기.
==> 중요한 부분은 배포 환경에서 분리한 파일도 실행시켜야 한다.
node-cron을 이용한 예)
const cron = require("node-cron");
const { Op } = require("sequelize");
const { Boats } = require("./models");
// 보트 업데이트 함수
const updateBoats = async () => {
const today = new Date();
const boats = await Boats.findAll({
where: {
[Op.and]: [{ endDate: { [Op.not]: "" } }],
isDone: false,
},
raw: true,
});
for (const boat of boats) {
if (new Date(boat.endDate) <= today) {
await Boats.update({ isDone: true }, { where: { boatId: boat.boatId } });
console.log(`보트 ${boat.boatId} 수정 완료`);
}
}
};
// 보트 업데이트 일정 설정 함수
const scheduleBoatsUpdate = async () => {
try {
await updateBoats();
console.log("업데이트 완료.");
} catch (e) {
console.error("마감기한 업데이트 에러", e);
}
};
// 크론 작업 생성 및 시작
const scheduledTask = cron.schedule("0 0 * * *", scheduleBoatsUpdate, {
scheduled: true,
timezone: "Asia/Seoul",
});
scheduledTask.start();
==> 마지막에 scheduledTask.start()부분이 없으면 실행이 안되므로 꼭 작성하기.
'JavaScript Dev. > Node.js' 카테고리의 다른 글
Helmet 모듈이란?? (0) | 2023.07.21 |
---|---|
JWT 토큰 보안을 강화하기.... (0) | 2023.07.21 |
카카오 소셜 로그인(feat. passport-kakao, jwt) (0) | 2023.06.12 |
AWS EC2를 이용해 HTTPS 배포 (feat. 가비아) (2) | 2023.06.02 |
Layered Architecture Pattern (0) | 2023.05.19 |