繁体   English   中英

Sidekiq未连接到Rails

[英]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

我的猜测是,客户端和服务器配置之间的名称空间或配置不同。

我遇到了同样的问题。

原来,我在Gemfiledevelopment组中配置了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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM