node-cron 모듈은 GNU crontab 기반의 node.js용 순수 JavaScript의 작은 작업 스케줄러이다 . 이 모듈을 사용하면 전체 crontab 구문을 사용하여 node.js에서 작업을 예약할 수 있다.
설치하기
$ npm install --save node-cron
node-cron과 속성 스케쥴을 가져온다.
let cron = require('node-cron')
cron.schedule(' * * * * * *',()=>{
console.log('매 분마다 실행');
});
크론 구문
# ┌────────────── second (optional)
# │ ┌──────────── minute
# │ │ ┌────────── hour
# │ │ │ ┌──────── day of month
# │ │ │ │ ┌────── month
# │ │ │ │ │ ┌──── day of week
# │ │ │ │ │ │
# │ │ │ │ │ │
# * * * * * *
필드 : 값
- 초 : 0-59
- 분 : 0-59
- 시 : 0-23
- 일 : 1-31
- 월 : 1-12 (또는 이름)
- 요일 : 0-7 (또는 이름, 0 또는 7은 일요일)
배수값 사용
'초'는 작성하지 않으면 생략되는 필드값인걸 생각해보면, 지금 1,2,4,5가 적혀있는 곳은 '분' 필드다.
1분, 2분, 4분, 5분마다 console.log()가 출력될 것이다.
let cron = require('node-cron');
cron.schedule('1,2,4,5 * * * *', () => {
console.log('running every minute 1, 2, 4 and 5');
});
범위 사용
값의 범위도 사용할 수 있다.
let cron = require('node-cron');
cron.schedule('1-5 * * * *', () => {
console.log('1에서 5까지 매분마다 실행');
});
단계 사용
단계 값은 '/' 및 숫자가 포함된 범위 다음에 범위와 함께 사용할 수 있다.
'/'는 나눈 몫의 값을 표시한다는 것을 기억해보면 1/2는 몫의 값이 0이므로 아무것도 출력되지 않는다.
하지만 2/2는 몫의 값이 1이므로 값이 생성되고, ('1 * * * *')과 같게 된다. 그러므로 1분에 출력된다.
3/2는 몫이 1이므로 2와 같아서 생략되고, 4/2는 몫이 2가 나와서 ('1,2 * * * *')가 되므로 1분과 2분에 출력될것이다.
결국 '*/2 * * * *'은 2분마다 실행된다.
let cron = require('node-cron');
cron.schedule('*/2 * * * *', () => {
console.log('2분마다 실행');
});
이름 사용
월과 요일에는 이름으로 사용할 수도 있다.
let cron = require('node-cron');
cron.schedule('* * * January,September Sunday', () => {
console.log('1월과 9월의 일요일마다 실행');
});
줄임말로도 사용할 수 있다.
cron.schedule('* * * Jan,Sep Sun', () => {
console.log('1월과 9월의 일요일마다 실행');
});
크론 함수
일정
crona 표현식이 tick할때마다 주어진 작업이 실행되도록 예약한다.
인수 :
- 표현식 : string - 크론 표현식
- 함수 : Function - 실행할 테스크
- 옵션 : Object - 작업 예약을 위한 선택적 구성
옵션
- scheduled : boolean - 생성된 작업이 예약되었는지 여부를 설정하는 값. 기본값은 true
- timezone : 작업 예약에 사용되는 시간대. IANA time zone database에서 값을 확인하자.
let cron = require('node-cron');
cron.schedule('0 1 * * *', () => {
console.log('Running a job at 01:00 at America/Sao_Paulo timezone');
}, {
scheduled: true,
timezone: "America/Sao_Paulo"
});
ScheduledTask 함수
스케쥴테스크 시작하기
let cron = require('node-cron');
let task = cron.schedule('* * * * *', () => {
console.log('stopped task');
}, {
scheduled: false
});
task.start();
스케쥴테스크 멈추기
let task = cron.schedule('* * * * *', () => {
console.log('will execute every minute until stopped');
});
task.stop();
유효성 확인하기
let valid = cron.validate('59 * * * *');
let invalid = cron.validate('60 * * * *');
그 외 정보
일반적으로 "fork-and-pull" Git 작업 흐름을 따른다.
- GitHub에서 repository를 fork하십시오.
- 사용자가 가진 fork의 branch에 변경 사항을 커밋한다.
- 변경 사항과 함께 pull request "upstream";
- 참고: pull request 하기 전에 "upstream"에서 최신폼을 병합해야 합니다!
'프로그래밍 > nodejs' 카테고리의 다른 글
adminJS - API (공식 사이트 번역) (0) | 2022.11.16 |
---|---|
adminJS - UI 커스터마이즈 / css 스타일 덮어쓰기 (공식 사이트 번역) (0) | 2022.11.16 |
adminJS - UI 커스터마이즈 / 사용자설정 컴포넌트(공식 사이트 번역) (0) | 2022.11.16 |
adminJS 튜토리얼 - 콘텐츠 관리 시스템 (공식 사이트 번역) (0) | 2022.11.16 |
adminJS 튜토리얼 - 국제화(i18n) (공식 사이트 번역) (0) | 2022.11.16 |
댓글