회사에서 Cron(정기적 함수 실행) 코드를 작성할 일이 생겼다. 문서와 블로그 글을 봐도 이해하기 어려운 부분이 있어 테스트 해 보기로 했다.
크론은 일정에 따라 무언가를 실행할 수 있는 도구입니다. 이는 일반적으로 cron 구문을 사용하여 수행됩니다. 예약된 작업이 트리거될 때마다 함수를 실행할 수 있습니다. 또한 child_process를 사용하여 자바스크립트 프로세스 외부에서 작업을 실행할 수 있습니다. 또한 이 라이브러리는 기본 cron 구문을 넘어 Date 객체를 제공할 수 있습니다. 이것은 콜백의 트리거로 사용됩니다. Cron 구문은 여전히 허용되는 CronTime 형식입니다. 여기서 지원되는 Cron 패턴은 표준 Unix 형식을 확장하여 초 단위까지 지원하지만, 이 옵션을 해제하면 기본값이 0으로 설정되어 Unix 동작과 일치합니다. ( Deepl 번역 )
import { CronJob } from 'cron';
const SECOND = 1000;
const MINUTE = SECOND * 60;
const HOUR = MINUTE * 60;
const task = async () => {
const d = new Date(Date.now() - 10 * MINUTE);
console.log('Every 10 Minutes:' d);
}
const timeData = {
second: '0',
minute: '*/10',
hour: '*',
day: '*',
month: '*',
week: '*'
}
const cronTime = `${timeData.second} ${timeData.minute} ${timeData.hour} ${timeData.day} ${timeData.month} ${timeData.week}`
const job10Minutes = new CronJob(cronTime, task, null, true, 'Asia/Seoul');
job10Seconds.start();
timeZone
은 여기 에서 확인 할 수 있습니다.0
: 특정 시간으로 고정*
: 아무 때나.0 */10 * * * *
: 10분 0초마다 task
실행hour
에 *
대신 9-15
를 넣으면 9시부터 15시 까지를 의미.week
에 1-5
를 넣으면 월-금 을 의미.timeDate
에 들어가는 스트링은 띄어쓰기 X.