Domanda

Cron in Google App Engine ha la sintassi leggibile in umana per la pianificazione del lavoro di Cron.

https://developers.google.com/appengine/docs/Python / config / cron # the_schedule_format

Come implemendo funzionalità simili nella mia applicazione, dove l'uso Inserisci programma in umani Formato e programma Leggibili Parse e memorizza il valore attuale?

Modifica: Penso che stiano usando la libreria antlr3, ma non potevo capire come lo stanno usando.

È stato utile?

Soluzione

OK, in questo caso ci sono due punti necessari per esaminare.

First Antlr è ciò che ti dà il tuo parser a analizzare i formati leggibili in inglese / umani nel tuo programma come un flusso di token.Da questa stringa determinerai quindi il significato come:

run backup every 2 days
.

che si trasformerebbe in un flusso di token come:

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

Da qui determinerai quindi il significato della frase utilizzando una specie di macchina di stato che potrebbe essere scritta (modulo semplificato) come:

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
.

Qualcosa del genere sarebbe sufficiente analizzare la stringa nei tuoi valori richiesti.

La seconda parte sarebbe quella di connettersi a cron stesso o scrivere il proprio programmatore all'interno del tuo programma stesso che penso sia di più sulla falsariga del caso dell'uso.

antlr python: http://www.antlr.org/wiki/display/ Antlr3 / Python + Runtime

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top