Golang용 Cron 표현식 파서

9536 단어 parsercrongocronexpr

adhocore / 그롱크스


가볍고 빠르고 종속성이 없는 Cron 표현식 파서(Due Checker), 작업 스케줄러 및/또는 Golang용 데몬(v1.13 이상에서 테스트됨) 및 독립 실행형 사용





애드호코어/그롱스









gronxadhocore/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는 두 번째 일요일입니다)

  • 좋은 웹페이지 즐겨찾기