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
指定してデプロイしないとだめでした。