私はdelayed_jobを使用して、ほぼすべて一度に多数のジョブを作成し、後で実行します。ジョブの数が多すぎると、一定の時間が経過すると、関係なくすべてのジョブがキューからクリアされますその状態の。
次の Rails プロジェクトは、この問題を示しています: https://github.com/hayksaakian/taskbreaker
問題を再現するには、いくつかのタスク (5 ~ 15 など) を作成し、それぞれに (Web インターフェイスまたはコンソールから) 約 100 の目標を設定します。
次に、コンソールでこれらのタスクを実行しようとします: Task.attempt_tasks
何が起こるかは次のとおりです: 多くのジョブが作成され、ワーカーは数分間自分の仕事を行い、その後、すべてのジョブがキューから消えます。
これが事実であることを確認するには、任意のタスクを確認してください。各実績の任意の番号が「10」に等しくない場合があることに気付くでしょう (遅延の各試行文字列呼び出しに対して 1 ずつインクリメントしているため、10 である必要があります)。各実績の任意の配列の長さも 10 ではありません (attempt_array の呼び出しを 10 回遅らせたことを考えると、10 の長さになるはずです)。
エラーが表示されていないため、なぜこれが起こっているのかわかりませんが、起こっていることは確かです。
taskbreaker.herokuapp.com で悪い作業の例を参照してください。
それが助けになるなら、私はherokuでホストしていることに注意してください。また、妥当な時間内に問題を再現するには、少なくとも 5 人のワーカーが必要です。