Heroku無料枠のスリープを回避する
Heroku の無料枠で動いているアプリケーションは 30 分間接続がないとスリープしてしまい,次に立ち上げたときに時間がかかってしまいます.が,実は回避する方法もあります.
Heroku の無料枠の制限
一応説明しておくと,クレジットカードもしくはデビットカードを登録した無料アカウントでは,月 1,000dyno 時間まで無課金でアプリケーションを動かすことができます.
感覚的に 1dyno = 1 コアだと考えていいので,一つのアプリケーションを一か月動かしたら大体 720dyno 時間を消費します.
スリープを回避する方法
アプリが眠らないようにするためにすべきことは簡単です.30 分経つ前に叩き起こせばいいんです.
Web アプリケーションの場合は URL に接続するだけです.
URL に定期的に接続する方法はいくつかあると思いますが,今回は Heroku で完結させるために Heroku Scheduler アドオンを用います.
Heroku Scheduler の設定
まず,プロジェクトにアドオンを追加します.このアドオンはこの程度の処理であれば,無料で使うことができるものです.
terminal
$ heroku addons:create scheduler:standard
その後 Heroku のサイトを見ると,プロジェクトのトップページのアドオンに Heroku Scheduler が出ているはずです.そこから GUI での設定画面に移動できます.
Web アプリケーションに接続するよう,コンテンツの取得などに使う curl を用います.
terminal
$ curl http://www.example.com
これを 10 分おきに実行するように設定しておけば,スリープしません.
注意点
スリープしないということは常に dyno 時間を消費し続けるので,二つ以上のアプリに設定すると共倒れします.