javascript Cron 코드 정리

chichi·2023년 3월 2일
0

회사에서 Cron(정기적 함수 실행) 코드를 작성할 일이 생겼다. 문서와 블로그 글을 봐도 이해하기 어려운 부분이 있어 테스트 해 보기로 했다.

상황

  • 10분, 30분, 1시간, 12시간 마다 특정 task 를 실행하고, 그 이전 시간동안 일어났던 일을 다룸.

Cron

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시 까지를 의미.
  • week1-5 를 넣으면 월-금 을 의미.
  • 주의: timeDate 에 들어가는 스트링은 띄어쓰기 X.
profile
번역글 위주로 다루려 합니다. 오역 및 기타 사항은 해당 게시글에 댓글로 남겨주시면 답변드리겠습니다. 좋은 하루 되세요!

0개의 댓글