いくつかの主要なステップで進行する大きなタスクがあります。ステップBを開始する前に、ステップAを完了する必要があります。ただし、私の場合、を使用して、各主要ステップを複数のプロセスに分割できますDelayed::Job
。
質問:すべてのプロセスがステップAでの作業を完了した後にのみ、ステップBを開始するための簡単な手法はありますか?
注1:スピンアップされた外部ワーカーの数が事前にわからないため、完了したワーカーの参照カウントを維持しても役に立ちません。
注2:他のジョブが完了するのを忙しく待つことだけが仕事であるワーカーを作成したくありません。Herokuの労働者はお金がかかります!
注3:各ワーカーにコールバックのDelayed :: Jobキューを調べて、after
それがステップAで作業している最後のキューであるかどうかを判断することを検討しました。この場合、ステップBを開始できます。これは機能する可能性がありますが、問題が発生する可能性があります。落とし穴。(より良い答えがない場合、これは私が行っているアプローチです。)