0

Resque から Sidekiq への変換に問題があります。perform_async(ids)Redis に何も追加しませんが、エラーは発生しません。Redis.current.append("test", "key") また、Sidekiq ワーカーは Redis サーバーに接続しますが、要求すると空の配列を取得しますが、Redis サーバーにキーを直接追加できますSidekiq::Client.registered_workers。これが問題かどうかはわかりませんがSidekiq.redis { |conn| conn.info }、ローカルの Redis サーバーですべて正しい情報が返されます。ただし、 nilSidekiq.server?値を返します。

更新:を実行するperform_async(args)と、文字列が返されます。

4

2 に答える 2

0

Sidekiq の構成で、Sidekiq のクライアント コンポーネントとサーバー コンポーネントに同じ redis 構成が使用されていないようです。

クライアントは Rails アプリ サーバー内で実行されますが、サーバーは作業が実行されるスタンドアロンの個別のプロセスです。両方が redis 構成を介して同じ redis キューを使用していない場合、作業は処理されません。

config/initializers/sidekiq.rb以下は、両方のコンポーネントに同じ redis を使用する構成ブロックの例です。

redis = { url: (ENV['REDIS_URL'] || 'redis://127.0.0.1'), namespace: 'sidekiq' }

Sidekiq.configure_server do |config|
  config.redis = redis
end

Sidekiq.configure_client do |config|
  config.redis = redis
end

私の推測では、クライアントとサーバーの構成の間に異なる名前空間または構成があると思います。

于 2013-09-13T18:16:13.807 に答える