http://code.google.com/intl/en/appengine/docs/python/config/cron.html
■注意
以下の情報は2009/04/09現在(Google App Engine 1.2.0.0)の情報です。皆様がごらんになっているときには古くなっている可能性があります。
■時間指定方法
cron.yamlを書く
本家cronとは記法が異なるが、本家cronとほぼ同様のスケジューリングが可能
起動タイムゾーンの指定も可能
cron: - description: daily summary job url: /tasks/summary schedule: every 24 hours - description: monday morning mailout url: /mail/weekly schedule: every monday 9:00 timezone: Australia/NSW
■認証
cronによって起動されたURLはadminユーザーによって起動されるため、以下の
app.yamlのhandlers要素にlogin: adminを指定する
application: hello-cron version: 1 runtime: python api_version: 1 handlers: - url: /report/weekly script: reports.py login: admin
2009/04/13追記、以下の方法は利用できません。詳しくはこちらの記事をご覧ください。ご迷惑をおかけいたしまして申し訳ありませんでした。
from google.appengine.api import users # ログインしていない場合やadmin以外の場合にはFalse。adminがログインしている場合のみTrue。 if users.is_current_user_admin(): # cronジョブをここで実行 else: # エラー画面を表示するなど
さらにcronはURLを起動する際にHTTPリクエストヘッダーに以下の要素を付けるため、RequestHandler内でヘッダをチェックすることが出来る
X-AppEngine-Cron: true
■cronタスクの管理方法
cronタスクをアップロードするには、通常のアプリケーションをアップロードするときと同様に以下のコマンドを実行すれば、アプリケーションと一緒にアップロードされる
appcfg.py update
cronタスクだけをアップロードしたい場合場合は以下のコマンドを実行
appcfg.py update_cron
cronタスクを削除したい場合は、cron.yamlを以下のように書き換えてからアップロードすればよい
cron:
以下のコマンドを実行すれば、現在のcronの設定状況を見ることが出来る(ただし、タイムゾーンを扱う場合はpytzライブラリが必要)
appcfg.py cron_info
■制限
今のところPython版のみ(Java版はない)Java版もある。Java版はcron.xmlを記述する。http://code.google.com/intl/ja/appengine/docs/java/config/cron.html- タスクは20個まで
- 最短実行間隔は1分
- cron.yamlから起動できるのは自アプリのURLのみ。人のアプリを起動したり、全然関係ないURLを指定したり、シェルスクリプトを起動したりは出来ない
- cronから対象URLを起動した場合のCPU時間・通信量もすべて従量対象になる