Herokuのdynoは1日1回再起動する https://qiita.com/pilot/items/d42526c227ea322a2aa1 の続き
SchedulerアドオンでHeroku CLIを叩いて手動再起動する
- HerokuにHeroku CLI用のBuild Packを追加
heroku buildpacks:add https://github.com/heroku/heroku-buildpack-cli
- Heroku CLI用の長期間認証を作成
heroku authorizations:create
- 結果の「Token」欄の値を使う
- 環境変数に設定
heroku config:set HEROKU_API_KEY=<長期間認証Token>
- ★環境変数を設定すると起動中のアプリが再起動するので注意★
- アプリをデプロイ (git push)
- 「Heroku CLI installation done」が表示される
- Schedulerアドオン導入
heroku addons:create scheduler:standard
- 無料、Very Rareに動かない/重複実行あり https://devcenter.heroku.com/articles/scheduler
- スケジュール設定
-
heroku addons:open scheduler
- ブラウザが起動してスケジュール設定画面が表示される
- 例えば「/app/.heroku/bin/heroku restart -a <アプリ名> web.1」「Standard 1X」「Daily」「20:00 UTC」を設定
- web.1とweb.2で時刻をずらす等
- 「20:00 UTC」は日本時間の午前5時
-
Schedulerはheroku run bash
と同じくOne Off Dynoで実行されるので「長時間使用で無料枠を超える」等が起きないように留意のこと
再起動処理中もなるべくアプリを使えるようにするためにPrebootも設定しておく
heroku features:enable preboot
Prebootについて https://devcenter.heroku.com/articles/preboot
設定していないと「Dynoは立ち上がったがアプリの準備はまだできていない」状態でリクエストが振られ、エラーになることがある
以上