Herokuで定期的にプログラムを自動実行させる

2017-01-13

Heroku のアドオン Heroku Scheduler を使うと,プログラムを自動実行できます.

クレジットカードの登録

お金はかかりませんが,無料枠を超えれば料金が発生する可能性はあるということで,最初にクレジットカードの登録が必要です.

クレジットカードの登録なしではアドオンを追加できないようになっています.

デビットカードも有効です.

無料枠

無料枠はクレジットカードを登録すると,一アカウントにつき 1000dyno 時間になります.

去年あたりの記事だと 750dyno 時間と書かれていますが,毎年のように変更されているのか,もう古いです.

一つのアプリに 1dyno を当てている場合は,24 時間 * 31 日 = 744dyno 時間なので,まだ余裕があります.

依然と異なるのは,アプリごとではなくアカウントごとのカウントになっていることで,複数アプリを運用する人にとってはよりシビアになったようです.

dyno

Heroku では dyno 時間という特殊な単位が使われます.

dyno は処理を実行するための一つのプロセッサみたいな感じで,一つのアプリに一つ以上必要です.

Heroku Scheduler の使い方

アドオンはターミナル上でコマンド入力すると追加できます.

terminal

$ heroku addons:create scheduler

アドオンを追加できたら,ブラウザで開いて Add new job を押し,実行するときのコマンドと実行頻度,時間を設定します.

実行するときのコマンドは,ターミナルに打つものと同じです.

terminal

// 例
$ python app.py

実行頻度とスリープ時間

実行頻度は毎日,毎時間,10 分おきの 3 種類です.

各アプリは 30 分経つとスリープし,再び呼び出したとき,実行までに少し時間がかかります.

Heroku Scheduler でそれを防ぐには 10 分おきに叩き起こすしかないのですが,他にも方法はいくつかあるようです.まだ試していませんが.

Web ページを Heroku で公開する場合,ひと月に 744dyno 時間消費するのかと思っていましたが,来訪者がなくスリープしている時間は含まれないため,結構余裕があるかもしれません.