Notice
Recent Posts
Recent Comments
Link
«   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
Tags
more
Archives
Today
Total
관리 메뉴

JS Coding

[Node.js] 노드 Scheduler API 활용 및 사용 본문

JavaScript

[Node.js] 노드 Scheduler API 활용 및 사용

JSKJS 2024. 5. 2. 23:02

노드에서 제공하는 일정 시간 자동 api  실행 시켜주는 api가 있다.

 

작성 된 코드를 먼저 보여주고 설명 하도록 하겠다.

 

const nowTime = moment().format('YYYY-MM-DD');
const todayMidnight = moment().startOf('day').format('YYYY-MM-DD');
const rule = new nodeSchedule.RecurrenceRule();
rule.second = 10;
const job = nodeSchedule.scheduleJob('0 0 * * *', function () {
	try {
		missionEndDateScheduleExecution()
			.then((result) => {
				console.log('노드 스케줄 체크 확인 ');
				console.log(result);
				console.log('현재시간 : ' + nowTime);
				console.log('오늘 정각 : ' + todayMidnight);
			})
			.catch((error) => {
				console.error('노드 스케줄 실행 중 오류가 발생했습니다:', error);
			});
	} catch (error) {
		throw new HttpException(400, { error: ['BAD REQUEST'] });
	}
});

 

Node.js로 프로젝트를 만들 때 서버를 실행 시키는 js파일이 있을 것이다.

보통 app.js , main.js 등으로 이름 지어 생성해서 하고는 하는데

서버가 만약에 중지 되어 OFF 되었을 때를 대비해 다시 재가동 되었을 때 실행 되도록 여기에 로직을 구현 하였다.

 

일단 터미널에  노드 스케줄을 설치 한다.

npm install node-schedule 를 입력하여 설치하면 된다. 

 

그 다음에 import 하여 사용 할수 있도록  main.js에 작성 한다.

import nodeSchedule from 'node-schedule';

 

그러면 사용 할 준비는 끝났다.

 

글쓴이는 매일 정각에 API 가 실행 되도록 하기 위해서 

 

nodeSchedule.schedulJob 을 이용해서 설정 해 놓았다.

 

' 0 0 을 작성 하였는데 왼쪽 기준으로 분, 시 , 일, 월, 년 으로 구성하여 사용 할 수 있는데

 

 * 를 작성하면 매일 무한루프를 설정한다고 생각하면 되겠다.

' 0 0 * * * ' 으로 하면  * 년 * 월 * 일 00:00 에 실행 되도록 설정한 것이 된다.

 

그다음엔 function 안에 실행 시키고자 하는 로직을 작성하면 된다.

 

글쓴이는 람다 형식으로 하여 then 로직 구현 이후 처리로 console을 작성 하였고

.catch문으로 예외처리를 해 놓았다. 

 

이처럼 간편하게 사용 할 수 있으며, 원하는 시간의 반복적이거나 단일 적으로 스케줄링해서 api를 실행 시킬 수 있다.