[英]Sidekiq not connecting to Rails
我在從Resque轉換到Sidekiq時遇到問題。 盡管perform_async(ids)
不會向Redis添加任何內容,但我沒有任何錯誤。 我可以通過Redis.current.append("test", "key")
將密鑰直接添加到Redis服務器。我的Sidekiq工作程序也連接到Redis服務器,盡管當我請求Sidekiq::Client.registered_workers
時得到一個空數組Sidekiq::Client.registered_workers
Web UI僅顯示框架,除了Redis信息外沒有其他信息。 我不知道這是否重要,但是Sidekiq.redis { |conn| conn.info }
Sidekiq.redis { |conn| conn.info }
返回的信息對於我的本地Redis服務器都是正確的。 雖然Sidekiq.server?
返回nil值。
更新:當我執行perform_async(args)
它返回一個字符串。
聽起來您的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
我的猜測是,客戶端和服務器配置之間的名稱空間或配置不同。
我遇到了同樣的問題。
原來,我在Gemfile
的development
組中配置了rspec-sidekiq
,並且rspec-sidekiq顯然對異步調用進行了測試。
解決方案是這樣修改我的Gemfile
:
gem 'rspec-sidekiq', group: :test, require: false
最后,我在spec_helper.rb
中添加了spec_helper.rb
require 'rspec-sidekiq'
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.