search
LoginSignup
68

More than 5 years have passed since last update.

posted at

updated at

Organization

Heroku 上で動く Hubot をうまく休ませる

残念ながら、Heroku の料金プラン変更 により、Free Plan のままでは Bot を動かし続けることができなくなりました。Sleep しないように、自分自身を起こし続ける hubot-heroku-keepalive(https://github.com/hubot-scripts/hubot-heroku-keepalive) も、早速今回の変更に対応したようなので、設定してみましょう。

hubot-heroku-keepalive の設定

Free Plan に対応するため、2つの環境変数が追加になっています。

  • HUBOT_HEROKU_WAKEUP_TIME
  • HUBOT_HEROKU_SLEEP_TIME

この設定により、HUBOT_HEROKU_WAKEUP_TIMEHUBOT_HEROKU_SLEEP_TIME の間だけ Keep Alive の仕組みが動作することになります。

また、30分何もしていないと Sleep してしまうので、HUBOT_HEROKU_KEEPALIVE_INTERVAL を 30分より短くする必要があります。デフォルトが 5分なので、特に問題はないでしょう。

しかし、これだけでは永続的に Hubot を動かすことはできません。hubot-heroku-keepalive には、Sleep した Dyno を起こす方法を持っていません。

今回は、Heroku の Add-on である Process Scheduler を利用します。

Process Scheduler の設定

heroku コマンドでインストール 〜 設定画面を開くところまで行います。

$ heroku addons:create process-scheduler
Creating process-scheduler-hogehoge... done, (free)
Adding process-scheduler-hogehoge to your-app... done
Setting PROCESS_SCHEDULER_URL and restarting your-app... done, v43
Use `heroku addons:docs process-scheduler` to view documentation.

$ heroku addons:open process-scheduler
Opening process-scheduler (process-scheduler-hogehoge) for your-app... done

まず、Heroku の API Key を要求されるので、Manage Account で API Key を取得しておきましょう。

注意ポイントは Time Zone の設定です。この設定と Heroku の Time Zone が一致している必要があります。日本時間の場合は、Add-on の設定は、(GMT + 9:00) Tokyo を指定し、Heroku は環境変数に、

  • TZ=Asia/Tokyo

と設定しておきましょう。

後は、hubot-heroku-keepalive で設定した時間と Process Scheduler の時間に同じものを設定すれば完了です。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
68