daily-dev.net

React, firebase, 機械学習など

firebase cloud functions で爆速でAPIサーバー作ってcron-job.orgで定期実行する

sponsored

heroku とかだとデフォルトでスケジューラ機能が付いているんですが

2018.9時点でfirebaseには付いていないので、 cron-job.org というリクエストを定期実行してくれる外部サービスに頼らなければいけないようです😅

firebase cloud functions HTTP request のここがすごい

index.jsファイルに

exports.my_request = functions.https.onRequest((request, response) => {
  // ...
});

このような関数を定義して、デプロイ($firebase deploy --only functions *1)するだけで動いてしまう恐ろしい機能。

デプロイが終わってコンソール>Functionsをクリックすると

HTTPリクエストを受け取るURLがパネルに追加されています。

形式は

https://us-central1-<PROJECT-ID>.cloudfunctions.net/my_request

のようになっています。

これをコピーして

cron-job.org - Free cronjobs - from minutely to once a year.

に登録して、指定の回数叩いてもらおう!という迂回手段になります。

cronで定期実行

cron-job.org - Free cronjobs - from minutely to once a year.

f:id:serendipity4u:20180916184049p:plain

https://us-central1-<PROJECT-ID>.cloudfunctions.net/my_request を登録すればいいだけです。

最も高い頻度で毎分実行が可能ですよ。

ちなみに cron-job.orgってどうマネタイズしてるの

広告も課金もないcron-job.org。

cron-job.orgのFAQによると、

「企業のために作ったのを一般開放してるからカネかかっとらん。」

とのことですが、このサービスはかなりのユーザー数を抱えておりサーバコストも嵩みそうです。

そんな事ありえるんでしょうか?

ブランディング・・・?

不思議です。

*1 firebase deploy ではなくfirebase deploy --only functions を用いると、変更が加えられた関数のみがアップロードされる。 firebase deployを実行してたくさんの関数が書かれていた場合、標準の割り当てを超えてしまい、HTTP 429 Quota エラー メッセージが表示されることがあるらしい。