レーキタスクをそれほどうまく監視することはできませんが、できることがいくつかあります。1つはロギングの使用です。タスクの開始時刻と終了時刻をログに出力すると、期間ごとに何が起こっているかを確認できます。これをPapertrailアドオンのようなものと組み合わせると、後で追加の問い合わせを行うことができます。
ジョブ自体の実行に関しては、実行する必要のある方法に応じて、バックグラウンドプロセスを実行する方法がいくつかあります。
スケジュールに従ってジョブを実行する必要がある場合は、いくつかのオプションを利用できます。まず、Herokuスケジューラがあります。これはかなり優れていますが、実行が行われることを保証するものではありません。通常、これを使用して、タスクの期間中に1回限りのダイノを発生させるレーキタスクを開始します。したがって、開発では、これらのタスクが可能な限り効率的であることを確認する必要があります。
または、もう少し制御が必要なジョブや、クロックプロセスを使用しているジョブを探している場合。基本的に、これは24時間年中無休で実行されるdynoであり、事前設定された間隔と時間で他のジョブを開始するだけです。これは通常、時計仕掛けの宝石を使用して行われます。このアプローチの欠点は、常にクロックプロセスの料金を支払う必要があることです。
3番目のアプローチであり、機能する可能性のあるアプローチは遅延ジョブrunat
です。このオプションを使用すると、将来実行するジョブをキューに入れることができます(ジョブは自分自身を再キューに入れることができます)。これにはいくつかの問題があり、障害が発生するとチェーン全体が停止する可能性があり、それらすべてを処理するにはフルタイムのワーカーが実行する必要があります。
したがって、請求額を最小限に抑えるために、レーキタスクのパフォーマンスと信頼性を確保してから、適切なスケジュールオプションを選択してください。スケジュールとユーザーが作成したイベントを確認している場合は、delayed_jobが最適なオプションです。定期的に実行されているいくつかのタスクを見ている場合は、スケジューラーに移動します。タイムクリティカルなジョブを定期的に実行することを検討している場合は、時計仕掛けを使用してください。
いずれにせよ、アプローチに応じて、かなりの量の処理を1つまたは2つのプロセスに制限できるはずです。