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
ハマりポイント
- GAEのタイムアウトについて最大60分と記述があります。
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失敗・・・
結構需要あると思うんだけどなぁ・・・?