Rails 3.2.8、delayed_job (3.0.3)、delayed_job_active_record (0.3.3)。WEBrickを使用。
起動時にキャッシュを非同期に設定する初期化子があります。
MyModel.delay.get_lots_of_records
MyModel.delay.get_some_other_records
MyOtherModel.delay.get_tons_of_records
MyOtherModel.delay.get_some_other_records
開発環境では、delayed_job ログとキャッシュ ログによって証明されるように、これは正常に機能します。
ただし、ステージングでは、これらのジョブが 1 つまたは 2 つ実行されることもあれば、まったく実行されないこともあります。通常、少なくとも 1 つ、通常は同じもの (常にではありません) が実行されます。起動後にdelayed_jobsテーブルを見ると、4つのジョブがすべて書き込まれ、2秒後に消えることがわかります.
ここの推奨に従って、私は持っています
# config/initializers/delayed_job_config.rb
Delayed::Worker.destroy_failed_jobs = false
しかし、ジョブは失敗したり実行されたりすることなく、非常に迅速に削除されています。
にブレークポイントを挿入するDelayed::PerformableMethod.perform
と、ジョブが実際に実行された場合にのみそのメソッドが呼び出されることがわかります。問題はその上流にあります。ただし、destroy
メソッドは afterperform
で呼び出されるため、何が起こっているのかわかりません。
トラブルシューティングの推奨事項または追加の診断アクションを探しています。