Google App Engineでのcron処理
裏のバッチ処理なんかで使われるcronジョブの作り方。
http://code.google.com/intl/ja/appengine/docs/python/config/cron.html
基本的に書いてある通りなんだけど、ちょっと解かりづらいところがあったのでまとめ。
ファイル構成
app.yaml
application: cron version: 1 runtime: python api_version: 1 handlers: - url: /cron/job #ジョブを呼び出すURL script: ./batch.py #処理するスクリプト login: admin #管理者権限で処理
URLへのアクセスを管理者アカウントに制限するため、
login: admin
を指定する。
ユーザが任意に実行しても良い場合もあるかも知れないが。
cron.yaml
cron: - description: cron sample job #ジョブ名 url: /cron/job #ジョブを呼び出すURL schedule: every 10 mins #ジョブ実行のスケジュール
schedule:の書き方は上記リンクを参照してください。
index.yamlはデフォルト。
batch.py
#!/usr/bin/env python from google.appengine.ext import webapp from google.appengine.ext.webapp import util from datetime import * class CronJob(webapp.RequestHandler): def get(self): self.response.out.write(datetime.now()) def main(): application = webapp.WSGIApplication([('/cron/job', CronJob)], debug=True) util.run_wsgi_app(application)
ここでは日時を表示するだけです。
ローカルでの実行は
http://localhost:8080/_ah/admin/cron
にアクセスする事で確認・実行が可能です。
(ポートはプロジェクトによって異なります)