読者です 読者をやめる 読者になる 読者になる

風柳メモ

ソフトウェア・プログラミング関連の覚書が中心。

GAE-Cronをバージョンアップしました(version 0.02)

GAE-Cron

安定性の向上を目指して…

http://gaecronclub.appspot.com/
GAE-Cronですが、version 0.01系列では、設定しているはずのタイマが、一部コールされなくなってしまうことがあるなど、安定性に問題があったようですので、タイマ処理を全面的に書き直し、version 0.02 としてアップしました。

ダウンロード(version:0.02):gaecron-v002.zip

もちろん(?)、本当に安定性が向上しているかどうか、保証の限りではありませんが(苦笑)。

アップデート方法

■ファイルの更新

version 0.01e・0.01fからは、以下のファイルが更新されています。

  • README
  • gaecron.py
  • gaetimer.py
  • cron.yaml

これらを既存のものに上書きしてデプロイ(アップロード)します。
PATH等の書き換えなどを行なっている場合は、該当箇所の書き換えも忘れないようにして下さい。
version 0.01d以前からのアップデートの場合、ファイルは全て置換した方が無難です。もちろんPATH等は環境に併せて書き換えておいてください。

■全タイマの再設定

管理者権限でログインし、画面左上部にある[全タイマ再設定]ボタンを押して下さい。
これは、どのバージョンからの移行であっても、必ず実施して下さい。

覚え書きなど

version 0.01系列では、速度的なものとCPU負荷の関係もあって、タイマ処理は全てメモリ(memcache)上でやっていたのですが、memcacheはいつ消えても不思議ではない、ある意味不安定なものであるため、予防策として、考えられる異常処理をいろいろと入れ、結果として複雑な処理となっていました。
ですので、一部のタイマだけがコールされない等の原因を突き止めるのが非常に困難となっていました。

version 0.02では、タイマに関する基本データに関してはdatastoreとしても保持しておき、普段はそこからコピーしたmemcache上で処理を行い、異常時にはdatastoreから書き戻す、という感じで処理を(0.01系列と比べて)単純化しています。
ただ、負荷的には0.01系列より重くなっているかも知れません。一応、1分間隔のタイマを250個かけて1日動かす、という試験はクリアしていますが。