Skip to content
Our Sponsors
Open in Anthropic

Cron Plugin ​

이 플러그인은 Elysia 서버에서 cronjob을 실행하는 기능을 추가합니다.

설치 방법:

bash
bun add @elysiajs/cron

사용 방법:

typescript
import { 
Elysia
} from 'elysia'
import {
cron
} from '@elysiajs/cron'
new
Elysia
()
.
use
(
cron
({
name
: 'heartbeat',
pattern
: '*/10 * * * * *',
run
() {
console
.
log
('Heartbeat')
} }) ) .
listen
(3000)

위 코드는 10초마다 heartbeat를 로그로 출력합니다.

cron ​

Elysia 서버용 cronjob을 생성합니다.

타입:

cron(config: CronConfig, callback: (Instance['store']) => void): this

CronConfig는 아래 지정된 매개변수를 허용합니다:

name ​

store에 등록할 작업 이름입니다.

이렇게 하면 지정된 이름으로 cron 인스턴스를 store에 등록하며, 나중에 작업을 중지하는 등의 프로세스에서 참조할 수 있습니다.

pattern ​

아래와 같이 지정된 cron 구문으로 작업을 실행할 시간입니다:

┌────────────── 초 (선택사항)
│ ┌──────────── 분
│ │ ┌────────── 시
│ │ │ ┌──────── 일
│ │ │ │ ┌────── 월
│ │ │ │ │ ┌──── 요일
│ │ │ │ │ │
* * * * * *

Crontab Guru와 같은 도구로 생성할 수 있습니다.


이 플러그인은 cronner를 사용하여 Elysia에 cron 메서드를 확장합니다.

아래는 cronner가 허용하는 설정입니다.

timezone ​

유럽/스톡홀름 형식의 시간대입니다.

startAt ​

작업의 예약 시작 시간입니다.

stopAt ​

작업의 예약 중지 시간입니다.

maxRuns ​

최대 실행 횟수입니다.

catch ​

트리거된 함수에서 처리되지 않은 오류가 발생해도 실행을 계속합니다.

interval ​

실행 사이의 최소 간격(초)입니다.

Pattern ​

플러그인을 사용하는 일반적인 패턴을 찾을 수 있습니다.

cronjob 중지 ​

store에 등록된 cronjob 이름에 액세스하여 수동으로 cronjob을 중지할 수 있습니다.

typescript
import { Elysia } from 'elysia'
import { cron } from '@elysiajs/cron'

const app = new Elysia()
	.use(
		cron({
			name: 'heartbeat',
			pattern: '*/1 * * * * *',
			run() {
				console.log('Heartbeat')
			}
		})
	)
	.get(
		'/stop',
		({
			store: {
				cron: { heartbeat }
			}
		}) => {
			heartbeat.stop()

			return 'Stop heartbeat'
		}
	)
	.listen(3000)

미리 정의된 패턴 ​

@elysiajs/cron/schedule에서 미리 정의된 패턴을 사용할 수 있습니다.

typescript
import { Elysia } from 'elysia'
import { cron, Patterns } from '@elysiajs/cron'

const app = new Elysia()
	.use(
		cron({
			name: 'heartbeat',
			pattern: Patterns.everySecond(),
			run() {
				console.log('Heartbeat')
			}
		})
	)
	.get(
		'/stop',
		({
			store: {
				cron: { heartbeat }
			}
		}) => {
			heartbeat.stop()

			return 'Stop heartbeat'
		}
	)
	.listen(3000)

함수 ​

함수설명
.everySeconds(2)2초마다 작업 실행
.everyMinutes(5)5분마다 작업 실행
.everyHours(3)3시간마다 작업 실행
.everyHoursAt(3, 15)15분에 3시간마다 작업 실행
.everyDayAt('04:19')매일 04:19에 작업 실행
.everyWeekOn(Patterns.MONDAY, '19:30')매주 월요일 19:30에 작업 실행
.everyWeekdayAt('17:00')월요일부터 금요일까지 매일 17:00에 작업 실행
.everyWeekendAt('11:00')토요일과 일요일 11:00에 작업 실행

함수 별칭에서 상수로 ​

함수상수
.everySecond()EVERY_SECOND
.everyMinute()EVERY_MINUTE
.hourly()EVERY_HOUR
.daily()EVERY_DAY_AT_MIDNIGHT
.everyWeekday()EVERY_WEEKDAY
.everyWeekend()EVERY_WEEKEND
.weekly()EVERY_WEEK
.monthly()EVERY_1ST_DAY_OF_MONTH_AT_MIDNIGHT
.everyQuarter()EVERY_QUARTER
.yearly()EVERY_YEAR

상수 ​

상수패턴
.EVERY_SECOND* * * * * *
.EVERY_5_SECONDS*/5 * * * * *
.EVERY_10_SECONDS*/10 * * * * *
.EVERY_30_SECONDS*/30 * * * * *
.EVERY_MINUTE*/1 * * * *
.EVERY_5_MINUTES0 */5 * * * *
.EVERY_10_MINUTES0 */10 * * * *
.EVERY_30_MINUTES0 */30 * * * *
.EVERY_HOUR0 0-23/1 * * *
.EVERY_2_HOURS0 0-23/2 * * *
.EVERY_3_HOURS0 0-23/3 * * *
.EVERY_4_HOURS0 0-23/4 * * *
.EVERY_5_HOURS0 0-23/5 * * *
.EVERY_6_HOURS0 0-23/6 * * *
.EVERY_7_HOURS0 0-23/7 * * *
.EVERY_8_HOURS0 0-23/8 * * *
.EVERY_9_HOURS0 0-23/9 * * *
.EVERY_10_HOURS0 0-23/10 * * *
.EVERY_11_HOURS0 0-23/11 * * *
.EVERY_12_HOURS0 0-23/12 * * *
.EVERY_DAY_AT_1AM0 01 * * *
.EVERY_DAY_AT_2AM0 02 * * *
.EVERY_DAY_AT_3AM0 03 * * *
.EVERY_DAY_AT_4AM0 04 * * *
.EVERY_DAY_AT_5AM0 05 * * *
.EVERY_DAY_AT_6AM0 06 * * *
.EVERY_DAY_AT_7AM0 07 * * *
.EVERY_DAY_AT_8AM0 08 * * *
.EVERY_DAY_AT_9AM0 09 * * *
.EVERY_DAY_AT_10AM0 10 * * *
.EVERY_DAY_AT_11AM0 11 * * *
.EVERY_DAY_AT_NOON0 12 * * *
.EVERY_DAY_AT_1PM0 13 * * *
.EVERY_DAY_AT_2PM0 14 * * *
.EVERY_DAY_AT_3PM0 15 * * *
.EVERY_DAY_AT_4PM0 16 * * *
.EVERY_DAY_AT_5PM0 17 * * *
.EVERY_DAY_AT_6PM0 18 * * *
.EVERY_DAY_AT_7PM0 19 * * *
.EVERY_DAY_AT_8PM0 20 * * *
.EVERY_DAY_AT_9PM0 21 * * *
.EVERY_DAY_AT_10PM0 22 * * *
.EVERY_DAY_AT_11PM0 23 * * *
.EVERY_DAY_AT_MIDNIGHT0 0 * * *
.EVERY_WEEK0 0 * * 0
.EVERY_WEEKDAY0 0 * * 1-5
.EVERY_WEEKEND0 0 * * 6,0
.EVERY_1ST_DAY_OF_MONTH_AT_MIDNIGHT0 0 1 * *
.EVERY_1ST_DAY_OF_MONTH_AT_NOON0 12 1 * *
.EVERY_2ND_HOUR0 */2 * * *
.EVERY_2ND_HOUR_FROM_1AM_THROUGH_11PM0 1-23/2 * * *
.EVERY_2ND_MONTH0 0 1 */2 *
.EVERY_QUARTER0 0 1 */3 *
.EVERY_6_MONTHS0 0 1 */6 *
.EVERY_YEAR0 0 1 1 *
.EVERY_30_MINUTES_BETWEEN_9AM_AND_5PM0 */30 9-17 * * *
.EVERY_30_MINUTES_BETWEEN_9AM_AND_6PM0 */30 9-18 * * *
.EVERY_30_MINUTES_BETWEEN_10AM_AND_7PM0 */30 10-19 * * *