dynoの種類(役割別)
- Web dyno
- Worker dyno
- One-off dyno
Web Dyno:
WebアプリケーションやAPIサーバーを実行するためのメインのプロセス。HTTPリクエストを処理する用途に最適。Worker Dyno:
バックグラウンドジョブや非同期タスクを実行するために使用。Webリクエストとは独立して動作する長時間の処理に適している。画像の処理やメール送信タスクなど
One-off Dyno:
一時的なタスクを実行するためのDyno。バッチ処理、データベースマイグレーション、デバッグなど、特定の作業が完了すると自動的にシャットダウンする。add-onでheroku shedulerというものがあるが、これを使ってメインのpythonプログラムの中に書いたメソッドを時間指定して実行できる。ただ、その際に使用されるのはweb dynoではなくOne-off dynoでとなる。
公式:HEROKU schedulerについてメインプログラムファイルと同階層にOne-off dyno用のプログラムを書いて、
heroku run python manage.py migrate --app your-app-name
heroku run python プログラム名.拡張子 メソッド名 --app アプリ名
のように手動で実行しても同じ
heroku schedulerで実行の場合は1つにつき最低実行間隔が10分となっているが、これをもっと短い感覚で常に実行するような場合はWorker-dynoを使用した方が良いようだ。
One-off dynoでそのような使い方をすると費用がかなりかかるらしい。基本的に定額制のHEROKUだがここには注意が必要である。
——
執筆中です