FURYU Tech Blog - フリュー株式会社

フリュー株式会社の開発者が技術情報を発信するブログです。

指定したURLへのアクセスをcronのように定期実行する

こんにちは。ピクトリンク事業部の古川です。

この記事はフリューAdvent Calendar 2018の12/11分となります。

今回は、URLへのアクセスを定期的に実行してくれるWebサービスcron-job.org」についてです。

はじめに

自分でWeb APIを立てて、GETやPOSTを定期的に実行したい時はないでしょうか。

私の場合、個人的にFirebase Cloud FunctionsにRest APIを作ったものの、定期的に実行する方法が無かったので色々な方法を探していました。

Firebase Cloud FunctionsのAPIを叩くためだけに別のサーバを建てるのは…うーん…

と考えていた時に出会ったのが、このcron-job.orgでした。

ちなみに日本語版はありません。英語とドイツ語のみです。

ですが非常に簡単なので、下記に説明しますのでご安心ください。

あ、あとオープンソースなのでコントリビュートも可能なようです。

実際に使ってみる

cron-job.org にアクセスしましょう。英語ですが大丈夫です。

スクリーンショット 2018-12-04 15.19.49

ユーザー登録する

登録は簡単ですので、画面右上の「Signup」から必要事項を入力して「create free account」をクリックしましょう!

スクリーンショット 2018-12-04 15.27.58

実際にジョブを作成する

画面右上の「Members」から「Cronjobs」を選択し、「Create cronjob」を押下します。

cronを実際に作成する画面は以下のようになっています。

設定できる項目

  • HTTPの認証
  • 定期実行の時間的条件
    • ◯分ごとに実効する
    • 毎日◯時◯分に実行する
    • 毎月◯日の◯時◯分に実行する
    • 自分で決める(複数選択可)

私がやりたかったのは「5分毎にFirebase FireStoreの情報を更新する」ことだったので、

「Every 5 minutes」として設定して実行しました。

時間の色々な選択肢があるのはステキです。

 

リクエストに失敗し続けたらどうなるの?

たとえばRest APIサーバが死んでいて、リクエストが失敗し続けたとしましょう。

その場合、以下のような内容でメールが来て「めっちゃ失敗してるからCron-Job止めたやで!」と知らせてくれます。

Hello Mr. Shinji Furukawa,

your cronjob has been disabled automatically because of too many failed executions.

        URL: https://hogehoge.hogehoge/api/test
        Last execution attempt: 01/01/1970 01:00:00 (geplant: 09/13/2018 21:20:00)
        Last status: Failed (500 Internal Server Error)
        Failed subsequent execution attempts: 0

You can re-enable your cronjob in your account at http://cron-job.org/.

Best Regards

The cron-job.org team

まとめ

いかがでしたか?

cron実行だけのためのサーバを建てずとも、簡単にHTTPリクエストを送り続ける設定を作ることができました。

失敗したときもメールで知らせてくれますし、個人で使うには便利なツールかと思います。

ちなみに、つい先日Google Cloud Platformに「Google Cloud Scheduler」が登場したようです。

cron-jobsと似たような動きをしてくれるもののようですので、そちらも試してみてもよいかもしれません!