質問

Google App EngineのCronは、Cronジョブスケジューリングのための人間が読める構文を持っています。

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

私のアプリケーションで類似の機能を実装する方法:人間の入力スケジュールを使用する 読みやすい形式とプログラム実際の値を解析して保存しますか?

編集: 私は彼らがAntLR3ライブラリを使用していると思いますが、私はそれを使っている方法を理解することができませんでした。

役に立ちましたか?

解決

OK、この場合、調べる必要がある2つのスポットがあります。

最初の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
.

文字列を必要な値に解析するのに十分なものです。

2番目の部分は、これをcron自体に接続するか、あなたのユースケースの線に沿ってもっと多くのプログラム自体の中にあなた自身のスケジューラを書くことです。

Antlr Python: http://www.antlr.org/wiki/display/ ANTLR3 / Python +ランタイム

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top