문제

Cron in Google App Engine은 Cron Job Scheduling의 인간이 읽을 수있는 구문을 가지고 있습니다.

https://developers.google.com/appengine/docs/파이썬 / config / cron # the_schedule_format

인간의 스케줄을 입력 할 때 응용 프로그램에서 유사한 기능을 구현하려면 어떻게해야합니까? 읽을 수있는 형식 및 프로그램 구문 분석 및 저장 실제 값?

편집 : 나는 그들이 Antlr3 라이브러리를 사용하고 있다고 생각하지만 그들이 어떻게 사용하는지 알아낼 수 없었습니다.

도움이 되었습니까?

해결책

OK,이 경우에 볼 필요가있는 두 가지 반점이 있습니다.

First Antlr은 파서가 토큰의 스트림으로 프로그램으로 영어 / 인간의 읽기 형식을 구문 분석 할 수있는 파서를 제공합니다.이 문자열에서 다음과 같은 의미를 결정합니다.

run backup every 2 days
.

다음과 같은 토큰 스트림으로 변합니다 :

<command_type> := run
<command_to_run> := backup
<time_frame_times> := every
<digit> := 2
<time_frame_modifier> := days
.

여기에서 다음과 같이 작성할 수있는 일종의 상태 시스템을 사용하여 문장의 의미를 결정합니다 (단순화 된 양식).

if token == command_type:
    switch( token.val )
        case "run":
            state = run
            program = tokens.pop().val
if token == time_frame_times:
    switch( token.val )
        case "every":
            time_frame_state = repeat_indefinitely
if token == time_frame_modifier:
    switch( token.val )
        case "days":
            time_frame_modifier = every_N_days
if token == digit:
    switch( time_Frame_modifier )
        case every_N_days:
            time_frame_modifier_value = token.val
.

문자열을 필요한 값으로 구문 분석하기에는 충분합니다.

두 번째 부분은이를 cron 자체로 연결하거나 사용 사례의 줄을 따라 더 많은 프로그램 자체에 자신만의 스케줄러를 작성하는 것입니다.

antlr python : http://www.antlr.org/wiki/display/ antlr3 / python + 런타임

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top