ちょっとハマったので書いておく。
結論から言うと、synchronized を設定すればいい。
GAE の cron は yaml で設定する。
https://cloud.google.com/appengine/docs/standard/go/config/cronref
今回は「30分ごとに起動する」という設定をしたかったので、以下のように書いた。
every 30 minutes
こう書けば、 00:00 -> 00:30 -> 01:00 のように30分おきに実行されるはずなのだが、
実行されない。
30分間隔で起動するだけで、
00:00 -> 00:30 -> 01:00 のように毎時30分間隔で起動してくれるわけではなかった。
例えば、00:10 にGCP コンソール上で手動で cron を起動すると、
次に起動するのは30分後の 00:40 になってしまう。
00:00 -> 00:30 -> 01:00 のように毎時30分間隔で起動するには
synchronized を設定する必要がある。
every 30 minutes synchronized
https://cloud.google.com/appengine/docs/standard/go/config/cronref#schedule_format
これで00:00 -> 00:30 -> 01:00 のように毎時30分間隔で起動するようになる。
00:10 にGCP コンソール上で手動で cron を起動したとしても、
次は 00:30 に起動してくれる。
ちなみに、from を設定すれば、特定の時間範囲も設定できる。
every 2 hours from 10:00 to 14:00