Golang용 Cron 표현식 파서
adhocore / 그롱크스
가볍고 빠르고 종속성이 없는 Cron 표현식 파서(Due Checker), 작업 스케줄러 및/또는 Golang용 데몬(v1.13 이상에서 테스트됨) 및 독립 실행형 사용
애드호코어/그롱스
gronx
는 adhocore/cron-expr에서 포팅된 Golang cron 표현식 파서입니다.
설치
go get -u github.com/adhocore/gronx
용법
import (
"time"
"github.com/adhocore/gronx"
)
gron := gronx.New()
expr := "* * * * *"
// check if expr is even valid, returns bool
gron.IsValid(expr) // true
// check if expr is due for current time, returns bool and error
gron.IsDue(expr) // true|false, nil
// check if expr is due for given time
gron.IsDue(expr, time.Date(2021, time.April, 1, 1, 1, 0, 0, time.UTC)) // true|false, nil
In a more practical level, you would use this tool to manage and invoke jobs in app itself and not…
설치
go get -u github.com/adhocore/gronx
용법
import (
"time"
"github.com/adhocore/gronx"
)
gron := gronx.New()
expr := "* * * * *"
// check if expr is even valid, returns bool
gron.IsValid(expr) // true
// check if expr is due for current time, returns bool and error
gron.IsDue(expr) // true|false, nil
// check if expr is due for given time
gron.IsDue(expr, time.Date(2021, time.April, 1, 1, 1, 0, 0, time.UTC)) // true|false, nil
보다 실용적인 수준에서 이 도구를 사용하여 앱 자체에서 작업을 관리하고 호출할 수 있습니다.
각각의 모든 새로운 작업/작업에 대해
crontab
로 엉망이 됩니다. 아직 그것을 대체하는 것이 아니라 오히려 보완합니다.그래도 계획은 있다#1 .
crontab에서 이 도구를 사용하는 Go 진입점을 가리키는
* * * * *
항목을 하나 넣기만 하면 됩니다.그런 다음 해당 Cron expr이 만료되면 해당 진입점에서 다른 작업을 호출합니다.
간단한 맵 구조가 여기에 적합합니다.
크론 표현식
Cron 표현식은 일반적으로 다음과 같은 5개의 세그먼트로 구성됩니다.
<minute> <hour> <day> <month> <weekday>
때로는 마지막에
<year>
에 대한 6번째 세그먼트가 있을 수 있습니다.각 세그먼트에 대해 쉼표로 구분된 여러 선택 항목을 가질 수 있습니다.
Eg: 0,30 * * * *
means either 0th or 30th minute.
값의 범위를 지정하려면 대시를 사용할 수 있습니다.
Eg: 10-15 * * * *
means 10th, 11th, 12th, 13th, 14th and 15th minute.
단계 범위를 지정하려면 대시와 슬래시를 결합할 수 있습니다.
Eg: 10-15/2 * * * *
means every 2 minutes between 10 and 15 i.e 10th, 12th and 14th minute.
3번째 및 5번째 세그먼트에는 추가modifiers(선택 사항)가 있습니다.
원하는 경우 혼합할 수 있습니다.
5,12-20/4,55 * * * *
matches if any one of 5
or 12-20/4
or 55
matches the minute.
실제 약어
월 및 요일에 대한 실제 약어를 사용할 수 있습니다. 예:
JAN
, dec
, fri
, SUN
태그
다음 태그를 사용할 수 있으며 구문 분석 전에 실제 cron 식으로 변환됩니다.
@yearly 또는 @annually - 매년
@monthly - 매월
@daily - 매일
@weekly - 매주
@hourly - 매시간
@5분 - 5분마다
@10분 - 10분마다
@15분 - 15분마다
@30분 - 30분마다
@always - 매분
gron.IsDue("@5minutes")
수식어
다음 수정자가 지원됨
날짜/세 번째 세그먼트:
L
는 월의 마지막 날을 나타냅니다(예: L
는 윤년의 경우 2월 29일을 의미할 수 있음)W
는 가장 가까운 요일을 나타냅니다(예: 10W
는 10번째 날짜에 가장 가까운 요일(월-금)입니다)요일/5번째 세그먼트:
L
는 월의 마지막 주중을 나타냅니다(예: 2L
는 마지막 월요일입니다)#
는 해당 월의 n번째 요일을 나타냅니다(예: 1#2
는 두 번째 일요일입니다)Reference
이 문제에 관하여(Golang용 Cron 표현식 파서), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/adhocore/cron-expression-parser-for-golang-4f45텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)