카테고리 없음
일정한 시간 마다 실행
관리자
2023. 5. 10. 18:45
Jobs and Scheduling
node-schedule에서 예약하려는 모든 일들을 Job 객체라 부른다.
Job 객체는 EventEmiiter이며, 아래 이벤트들을 실행시킨다.
- run : Job 실행 뒤에 발생하는 이벤트
- scheduled: Job이 예약되었을 때의 이벤트
- canceled: Job이 실행되기 전 취소되었을 때의 이벤트.
"L"이 하나라는 걸 주의하자 - error: Job에 에러가 발생했을 때의 이벤트
- success: Job이 성공했을 때의 이벤트
설치
npm install node-schedule
시간 설정 방식
포맷은 아래와 같고, * 표시는 all을 의미한다.
기호의 의미
node-schedule에서 지원이 되지않는 `W`, `L`, `#`은 생략한다.
- 물음표 (?)
day-of-month 또는 day-of-week 중 하나를 공백으로 남겨둘 때 사용한다. 어떤 곳에서는 cron 데몬의 시동 시간으로 정의되어, 오전 8시 25분에 시작된다면 ? ? * * * *가
25 8 * * * *로 업데이트 되고 다시 시작할 때까지 매일 이 시간에 실행된다.
- 슬래시 (/)
슬래시를 간격과 결합하여 간격 값을 지정할 수 있다. 예를 들어, 분 필드의 * / 5 는 5 분마다 나타낸다.
- *
모든 값을 의미한다.
- 하이픈 (-)
하이픈은 범위를 정의한다. 예를 들어 2000-2010년은 2000년에서 2010년 사이의 모든 연도를 나타낸다.
- 퍼센트 (%)
백 슬래시() 이스케이프 하지 않는 한 개행 문자로 변경되어, 첫 번째 %이후의 모든 데이터는 표준 입력으로 명령에 전송된다.
예시
1. 매 10초마다 실행되는 스케줄
const schedule = require('node-schedule');
const j = schedule.scheduleJob('10 * * * * *, function() {
console.log("매 10초마다 실행");
});
2. 매 셋째 주 금요일 8시마다 실행되는 스케줄
const schedule = require('node-schedule');
const j = schedule.scheduleJob('* 8 * * 5#3', function() {
console.log("매 셋째 주 금요일 8시마다 실행");
});
3. Date 기반 표현(crone의 역순)
const schedule = require('node-schedule');
const date = new Date(2012, 11, 21, 5, 30, 0);
const j = schedule.scheduleJob(date, function() {
console.log("2012-11-21, 05:30에 실행");
});
4. Recurrence Rule 기반 표현
const schedule = require('node-schedule');
const rule = new schedule.RecurrenceRule();
// 배열 방식
rule.dayOfWeek = [0, 1, 2];
rule.hour = 17;
rule.minute = 0;
const job = schedule.scheduleJob(rule, function(){
console.log('배열방식: 일요일, 월요일, 화요일 17:00에 실행');
// 객체 방식
const job = schedule.scheduleJob({hour: 17, minute: 0, dayOfWeek: [0, 1, 2]}, function(){
console.log('객체방식: 일요일, 월요일, 화요일 17:00에 실행');
});
- RecurrenceRule 프로퍼티
- second (0-59)
- minute (0-59)
- hour (0-23)
- date (1-31)
- month (0-11)
- year
- dayOfWeek (0-6) Starting with Sunday
- tz
4. Job 종료
j.cancel();