Question

cron dans google app engine ont lisible par l'homme de la syntaxe pour tâche de planification.

https://developers.google.com/appengine/docs/python/config/cron#The_Schedule_Format

Comment puis-je mettre en œuvre une fonctionnalité similaire dans mon application, où l'utilisation d'entrer dans le calendrier d'homme format lisible et programme d'analyser et de stocker la valeur réelle ?

edit:Je pense qu'ils sont à l'aide de antlr3 de la bibliothèque, Mais je ne pouvais pas en mesure de comprendre comment ils l'utilisent.

Était-ce utile?

La solution

Ok, dans ce cas, il y a deux spots, vous devez regarder dans.

Première antlr est ce que vous donne votre analyseur de parser l'anglais/de l'homme des formats lisibles dans votre programme comme un flux de jetons.À partir de cette chaîne vous sera alors de déterminer le sens tels que:

run backup every 2 days

qui serait à son tour tenu d'un flux de jetons tels que:

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

D'ici vous pourrez ensuite déterminer le sens de la phrase à l'aide de une sorte de machine d'état qui peut être écrite (formulaire simplifié) que:

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

Quelque chose comme ça suffirait pour analyser la chaîne dans vos valeurs requises.

La deuxième partie serait de connecter en cron lui-même ou écrire votre propre planificateur au sein de votre programme lui-même qui, je pense, est plus le long des lignes de votre cas d'utilisation.

Antlr Python: http://www.antlr.org/wiki/display/ANTLR3/Python+runtime

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top