cron 은 cron 구문을 사용하여 정의된 일정에 따라 작업(함수 또는 명령)을 실행하기 위한 강력한 도구입니다.
데이터 백업, 알림 등과 같은 작업에 적합합니다!
예약된 작업이 트리거될 때마다 기능을 실행합니다.
child_process
를 사용하여 시스템 명령과 같은 자바스크립트 프로세스 외부의 작업을 실행합니다.
콜백의 트리거로 cron 구문 대신 Date 또는 Luxon DateTime 객체를 사용하십시오.
몇 초 동안 추가 슬롯을 사용합니다(해제하면 기본값은 0으로 설정되고 Unix 동작과 일치합니다).
npm 설치 크론
특징
설치
v2에서 v3로 마이그레이션
기본 사용법
크론 패턴
크론 구문 개요
지원되는 범위
문제
API
독립형 기능
CronJob 클래스
CronTime 클래스
지역 사회
커뮤니티에 가입하세요
기여
일반기부
버그/문제 제출
감사의 말
특허
버전 3에 TypeScript가 도입되고 UNIX cron 패턴과 일치하면서 몇 가지 변경 사항이 적용되었습니다.
월 인덱싱: 0-11
에서 1-12
로 변경되었습니다. 따라서 모든 숫자 월을 1씩 증가시켜야 합니다.
요일 인덱싱: 7
에 대한 지원이 일요일로 추가되었습니다.
CronJob
의 조정 생성자는 더 이상 객체를 첫 번째이자 유일한 매개변수로 허용하지 않습니다. 대신 CronJob.from(argsObject)
사용하세요.
이제 콜백은 등록된 순서대로 호출됩니다.
nextDates(count?: number)
이제 항상 배열(인수가 제공되지 않으면 비어 있음)을 반환합니다. 단일 날짜에는 대신 nextDate()
사용하세요.
new CronJob(...args)
/ CronJob.from(argsObject)
를 위해 job()
메소드를 제거했습니다.
new CronTime()
위해 time()
메소드를 제거했습니다.
import { CronJob } from 'cron';const job = new CronJob('* * * * * *', // cronTimefunction () {console.log('매초마다 이 메시지가 표시됩니다.');}, // onTicknull , // onCompletetrue, // start'America/Los_Angeles' // timeZone);// job.start()는 네 번째 매개변수가 true로 설정되어 있으므로 여기서는 선택 사항입니다.
// "from" 정적 메소드를 사용하는 동등한 작업, 매개변수를 객체로 제공const job = CronJob.from({cronTime: '* * * * *',onTick: function () {console.log('이것을 보게 될 것입니다. 매초 메시지');},start: true,timeZone: 'America/Los_Angeles'});
참고: 위의 첫 번째 예에서
CronJob()
에 대한 네 번째 매개변수는 작업을 자동으로 시작합니다. 제공되지 않거나 falsy로 설정된 경우job.start()
사용하여 작업을 명시적으로 시작해야 합니다.
더 많은 고급 예제를 보려면 예제 디렉터리를 확인하세요.
크론 패턴은 이 라이브러리의 중추입니다. 다음 구문을 숙지하세요.
- `*` Asterisks: Any value - `1-3,5` Ranges: Ranges and individual values - `*/2` Steps: Every two units
자세한 패턴과 설명은 crontab.org에서 확인할 수 있습니다. 링크의 예에는 5개의 필드가 있고 1분이 가장 정밀한 단위이지만 cron 스케줄링은 6개의 필드가 있는 향상된 형식을 지원하여 두 번째 수준의 정밀도를 허용합니다. crontab.guru와 같은 도구는 패턴을 구성하는 데 도움이 될 수 있지만 초 필드를 고려해야 합니다.
다음은 이 라이브러리가 사용하는 UNIX Cron 형식과 추가된 두 번째 필드에 대한 빠른 참조입니다.
field allowed values ----- -------------- second 0-59 minute 0-59 hour 0-23 day of month 1-31 month 1-12 (or names, see below) day of week 0-7 (0 or 7 is Sunday, or use names)
'월' 및 '요일' 필드에도 이름을 사용할 수 있습니다. 특정 일 또는 월의 처음 세 글자를 사용하십시오(대소문자는 중요하지 않음). 범위와 이름 목록이 허용됩니다.
예: '월,수,금', '1~3월'.
JS Date
및 Luxon DateTime
객체는 모두 계산 지연으로 인해 밀리초 정밀도를 보장하지 않습니다. 이 모듈은 표준 cron 구문에 대한 밀리초 정밀도를 제외하지만 JS Date
또는 Luxon DateTime
객체를 통해 실행 날짜 지정을 허용합니다. 그러나 현재 시간에 밀리초를 추가하는 등 정확한 향후 실행 시간을 지정하는 것은 이러한 계산 지연으로 인해 항상 작동하지 않을 수도 있습니다. 4~5ms 미만의 지연은 불일치로 이어질 수 있는 것으로 관찰되었습니다. 모든 날짜 단위를 초 단위로 제한할 수 있지만 더 높은 정확성을 허용하면서도 사용자에게 잠재적인 문제에 대해 조언하는 방식을 선택했습니다.
onTick
에 화살표 기능을 사용하면 이를 부모의 this
컨텍스트에 바인딩합니다. 결과적으로 cronjob의 this
컨텍스트에 액세스할 수 없습니다. 이슈 #47(코멘트)에서 더 많은 내용을 읽을 수 있습니다.
sendAt
: CronTime
실행되는 시기를 나타냅니다(Luxon DateTime
객체 반환).
import * as cron from 'cron';const dt = cron.sendAt('0 0 * * *');console.log(`작업 실행 위치: ${dt.toISO()}`);
timeout
: CronTime
이 실행될 미래의 밀리초 수를 나타냅니다(숫자 반환).
import * as cron from 'cron';const timeout = cron.timeout('0 0 * * *');console.log(`작업은 ${timeout}ms` 후에 실행됩니다.
constructor(cronTime, onTick, onComplete, start, timeZone, context, runOnInit, utcOffset, unrefTimeout)
:
cronTime
: [필수] - 작업을 시작하는 시간입니다. cron 구문, JS Date
객체 또는 Luxon DateTime
객체일 수 있습니다.
onTick
: [필수] - 지정된 시간에 실행되는 함수입니다. onComplete
콜백이 제공된 경우 onTick
이를 인수로 수신합니다.
onComplete
: [선택 사항] - job.stop()
사용하여 작업이 중단될 때 호출됩니다. onTick
실행된 후에 트리거될 수도 있습니다.
start
: [선택 사항] - 생성자가 종료되기 전에 작업을 시작해야 하는지 결정합니다. 기본값은 false
입니다.
timeZone
: [선택사항] - 실행 시간대를 설정합니다. 기본값은 현지 시간입니다. Luxon 설명서에서 유효한 형식을 확인하세요.
context
: [선택사항] - onTick 메소드의 실행 컨텍스트입니다.
runOnInit
: [선택사항] - 초기화 후 onTick
함수를 즉시 트리거합니다. 기본값은 false
입니다.
utcOffset
: [선택사항] - 시간대 오프셋을 분 단위로 지정합니다. timeZone
과 공존할 수 없습니다.
unrefTimeout
: [선택사항] - 이벤트 루프 동작을 제어하는 데 유용합니다. 자세한 내용은 여기를 참조하세요.
from
(정적): 인수를 객체로 제공하는 새 CronJob 객체를 만듭니다. 위의 인수 이름과 설명을 참조하세요.
start
: 작업을 시작합니다.
stop
: 작업을 중지합니다.
setTime
: CronJob
의 시간을 수정합니다. 매개변수는 CronTime
이어야 합니다.
lastDate
: 마지막 실행 날짜를 제공합니다.
nextDate
: onTick
을 활성화할 후속 날짜를 나타냅니다.
nextDates(count)
: onTick
을 시작할 다가오는 날짜의 배열을 제공합니다.
fireOnTick
: onTick
호출 동작을 수정할 수 있습니다.
addCallback
: onTick
콜백 추가를 허용합니다.
constructor(time, zone, utcOffset)
:
time
: [필수] - 작업을 시작하는 시간입니다. cron 구문 또는 JS Date 객체를 허용합니다.
zone
: [선택사항] - CronJob
매개변수의 timeZone
과 동일합니다.
utcOffset
: [선택사항] - CronJob
매개변수의 utcOffset
과 유사합니다.
디스코드 서버에 참여해보세요! 여기서는 GitHub보다 더 캐주얼한 포럼에서 문제를 논의하고 도움을 받을 수 있습니다.
이 프로젝트는 도움을 찾고 있습니다! 프로젝트에 도움을 주고 싶다면 기여 문서를 살펴보세요.
우리의 기여 문서를 살펴보십시오. 여기에는 문제를 제출하기 전에 알아야 할 모든 정보가 포함되어 있습니다.
이것은 지역사회 노력 프로젝트입니다. 진정한 의미에서 이 프로젝트는 cron.js의 오픈 소스 프로젝트로 시작하여 다른 것으로 성장했습니다. 다른 사람들은 프로젝트에 코드, 시간 및 감독을 제공했습니다. 이 시점에서는 이름을 언급하기에는 너무 많아서 감사 인사만 전하겠습니다.
v2.4.0으로 가져오기 전에 명확히 유형화된 타이핑 작업을 해준 Hiroki Horiuchi, Lundarl Gholoi 및 koooge에게 특별히 감사드립니다.
MIT