67
68

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2015-09-01

残念ながら、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 の時間に同じものを設定すれば完了です。

67
68
0

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
  3. You can use dark theme
What you can do with signing up
67
68

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?