GAEでcronを使って定時実行処理をする

定期的に処理を実行したいときがありますね。GAEはcronの設定ができます。

cron設定

アプリケーションのルートディレクトリにcron.yamlファイルを作成します。中身はこんな感じ

// cron.yaml
cron:
- description: "ゴミ出し通知"
  url: /cron
  schedule: every day 22:30
  timezone: Asia/Tokyo

descriptionは省略できます。

以下、各プロパティの説明

url

cron設定をしておくと、このurlに対してscheduleした時間にGETリクエストを送ってくれます。定期的に実行したい処理を、GETリクエスト受けたときに実行できるようにアプリを書いておきます。

schedule

いつ実行するかを記述します。上のyaml設定例だと、毎日22:30に実行されます。 構文はここを参考に→ https://cloud.google.com/appengine/docs/flexible/go/scheduling-jobs-with-cron-yaml?hl=ja#Go_cron_yaml_The_schedule_format

timezone

scheduleタイムゾーン。省略できます。省略した場合はUTC

デプロイ

あとはデプロイすればOKです。

$ gcloud app deploy cron.yaml

ここハマりました。普段どおり、gcloud app deployでアプリのデプロイすればcron反映されると思っていました。が、上のように、cron.yaml指定してデプロイしないとだめでした。

参考

cloud.google.com