Sidekiqは開発モードで完全に機能しています。実稼働環境で使用しようとしているので、すべてのジョブはエンキューに座っているだけで、実行されていません。この問題を解決する方法について、誰かが正しい方向に向けることができますか?
Sidekiqプロセスが実際に実行されているかどうかを確認してください。
ps aux | grep sidekiq
そうでない場合は、まずフォアグラウンドでsidekiqを実行し、出力を確認してください。
bundle exec sidekiq -e production
私にとって多くの場合、それはconfig/sidekiq.yml
でこの特定のサービスのキューを適切に宣言していないためです。
この回答は関連性があります: Sidekiq not processing queue Sidekiqが設定ファイルについて通知されていない場合(本番環境で別の呪文が必要な場合があります)、正しいキューを使用していない可能性があります。
Rails Sidkiqジョブが 'enqueued'から移動しなかった理由を解明しようとしてこのページを終了したので、すべてに頭を上げます。
私の解決策:
1.)アプリの Sidekiq Web UI を確認します(ジョブがエンキューされた状態になっているという事実を確認できます)。
2.)失敗したジョブを手動で再試行する
3.)Sidekiqを実行しているサーバーのログを検査します。
(通常、ステージングでこれを行う場合、これはログが置かれる場所です)
tail -f /var/www/yourappname/current/log/staging.log
通常、これはSidekiqがエンキューされたジョブを処理できない理由のより詳細なエラーメッセージが表示される場所です。今回のケースでは、デプロイメント構成に固有の誤ったエンドポイントを指す環境変数がありました。
capistrano-sidekiq
gemを使用して問題を解決しました