ゆるゆる〜tech ver〜

勉強したこととかかく

GCPで定期実行

GCPcron.yamlAPIを定期的に叩くって感じ。

なので、外部アクセスが定期的に動かしたい処理を入れた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.yamlgcloud app deploy cron.yaml, gcloud app deploy を打ったあとだとすぐは動かない...? ようで手動でcron動かすとずっと500エラーになってしまった。 一晩寝かせたら動いていて、なぞof謎だった。

参考