はじめに
この記事はHerokuのスケジューラーアドオンであるAdvanced Schedulerについての記事です。
背景
Herokuでfree dynoを使うとウェブアプリケーションを無料で公開することができて、趣味での開発やプロトタイプの確認にはとても便利ですよね。
ところが、このfree dynoは何も動作しない状態が30分以上続くとsleep状態になってしまうという仕様になっています。
このsleep状態を解消するために、定期的にタスクを実行するHeroku Schedulerがこれまで使われていたようなのですが、今回Advanced Schedulerというものがあるのを知りました。1
使ってみると細かな時間設定が組めて、以前のスケジューラーよりも便利だったので紹介と導入手順をここに記しておこうと思います。
Advanced Schedulerの特徴は?
アドオンの紹介文に書いてた内容を箇条書きで抄訳します。
- Herokuアプリケーションにおける次世代標準のスケジューラー
- より優れた柔軟性
- cron式に対応していて、とても柔軟にタスク周期を設定できる。
- 「毎月15日で水曜の00:00に」実行するような複雑なタスク周期も可能。
- 設定不要のモニタリング
- デフォルトでタスクの実行を監視してくれていて、タスクが失敗したときには素早く通知を送ってくれる。
- シームレスな統合
- 起動中のアプリで動くどんなコマンドでも実行できる。アプリと同じdyno環境で実行できる。
- 法人向けレベルの信頼性
- 実行時遅延を最小にするよう設計されている。
- また、実行が失敗したときになんども実行する。
- 比類なき使いやすさ
- 簡単に使えるcron式エディターがあるので初心者でも玄人でも扱えます。
社内のちょっとしたツールなどでは、平日だけ起動したいこともあると思うので、そういうニーズにはぴったりですね!
使い方
次にこの項目ではインストールと設定方法を紹介していきます。
アドオンをインストール
まずは稼働中のアプリにアドオンをインストールしましょう。
- アプリのダッシュボード->リソースから、
Find more add-ons
をクリック。
- アドオン一覧から
advanced scheduler
を探してインストール。Dynoカテゴリーにあります。
-
Install advanced scheduler
をクリック
プランを選び、目的のappにプロビジョンする
- 今回は無料枠でいきたいので、
Add-on Plan
をHobbyにします。 -
App to provision to
では、導入したいapp名を入力し、指定します。 -
Provision add-on
をクリックします。
すると、アプリのダッシュボードのリソース画面にリダイレクトされますので、
Advanced Scheduler
をクリックすることで、アドオンの設定画面に移動します。
タスクを指定する
いよいよ実行するタスクを設定していきましょう。
-
Create First Trigger
をクリックします。
その後、設定項目が現れます。完成形はこのような形になります。
Name
タスクに名前をつけます。今回はAwake app
にしておきました。
Command
今回はsleep状態を起こすためのタスクなので、単純にcurlでgetしてきましょう。
curl http://アプリ名.herokuapp.com/
Timezone
有料プラン版の機能のようですがタイムゾーンを設定できます。2
State
このタスクの有効状態、無効状態を選択できます。
Type
- Reccurring (再帰的に実行する)
- One-off (一度だけ実行する)
Schedule
スケジュールヘルパーを使って典型的なスケジュールを設定するか、cron式を設定するかを選べます。
Use Editorを開いて、適切に設定した後に、コピペしましょう。
下記の例は、平日の10時から18時の間、00分と20分と40分にトリガーするような設定になっています。
追記:なお、無料プランの場合ではタイムゾーンがUTCに固定されるため、東京標準時に合わせるためにはhour
指定を-9した値で設定してください。
- 最後に
Save
すると、Scheduled Task
に設定されている内容が表示されるかと思います!
これでタスク設定が完了です。以上の設定でアプリが起動し続けるようになったかと思います!
お疲れさまでした。
おわりに
この記事は以上になります。何かわかりにくいところや間違えているところがありましたらコメントください。
参考リンク
公式ドキュメント: https://devcenter.heroku.com/articles/advanced-scheduler
ほしい物リスト
もしこの記事が役に立ったのであれば、本や食料を買っていただけるととても嬉しいです。https://www.amazon.jp/hz/wishlist/ls/1P644LOPKXCLP?ref_=wl_share