自称フルスタックエンジニアのぶろぐ。

pythonやreactや、gcpやawsなどなどについて書いていこうかと思います。

Google App Engine(GAE) のdeployの話 Part2 ~cron編~

Google App Engine(GAE) のcronの話

GAEでバッチ処理を行いたい場合は、バッチ処理の代わりにURLを叩いて処理します。

cron用のエンドポイントが必要になるってことですね。

そのエンドポイントをスケジュール登録して、叩いてもらう流れになります。

下記のように、cron.yamlを作成してdeployすることで、スケジュール設定することが可能です。

cron:
- description: "バッチ1"
  url: /cron/sample_batch1/
  schedule: every 15 minutes from 3:00 to 00:00
  timezone: Asia/Tokyo

- description: "バッチ2"
  url: /cron/sample_batch2/
  schedule: every monday 01:00
  timezone: Asia/Tokyo
  target: sample-api

- description: "バッチ3"
  url: /cron/sample_batch3/
  schedule: every day 08:30
  timezone: Asia/Tokyo
  target: sample-api

- description: "バッチ4"
  url: /cron/sample_batch4/
  schedule: every 1 hours
  timezone: Asia/Tokyo
  target: sample-api

ハマりポイント

App Engine 環境の選択  |  App Engine Documentation  |  Google Cloud

ですが、cronを実行してもworker timeoutと30秒ほどで異常終了となります。

回避策として、

app.yaml

entrypoint: gunicorn --timeout 3600 -b :$PORT sample.wsgi

timeoutの指定が必要です。

・・・これかなりハマりました。。。

やりたかったけど、実現できなかったこと。

毎週月、火、水、木、金の、1時間毎で、08~20時まで

が、いろんなパターン試したが、deploy失敗・・・

結構需要あると思うんだけどなぁ・・・?

murabo.hatenablog.com