GCPで定期実行
GCPのcron.yaml
はAPIを定期的に叩くって感じ。
なので、外部アクセスが定期的に動かしたい処理を入れたpathにアクセスがあると実行されてしまう。
それを回避するには、
cron.yaml
からのアクセスにはヘッダーに下記の情報が含まれるので、それを利用する。
ドキュメントには
cron サービスからのリクエストには、次の HTTP ヘッダーも含まれます。 X-Appengine-Cron: true
とあるが、これは違うっぽい?
HTTP_X_APPENGINE_CRON: true
っぽい。 (けどまだちゃんと確認できてない)
Djangoでやってたので
def hoge(request) if not request.META.get('HTTP_X_APPENGINE_CRON') is None: ## 実行したい処理
みたいな感じだと動いた(^O^)/やった〜
ただ、cron.yamlは gcloud app deploy cron.yaml
, gcloud app deploy
を打ったあとだとすぐは動かない...?
ようで手動でcron動かすとずっと500エラーになってしまった。
一晩寝かせたら動いていて、なぞof謎だった。