Ruby on rails Sidekiq未连接到轨道
我在从Resque转换到Sidekiq时遇到问题。虽然Ruby on rails Sidekiq未连接到轨道,ruby-on-rails,ruby-on-rails-3,redis,sidekiq,Ruby On Rails,Ruby On Rails 3,Redis,Sidekiq,我在从Resque转换到Sidekiq时遇到问题。虽然perform\u async(ids)没有向Redis添加任何内容,但我没有收到任何错误。我可以通过Redis.current.append(“test”,“key”) 此外,我的Sidekiq worker还连接到Redis服务器,不过当我请求Sidekiq::Client.registered_workers时,我得到一个空数组。web UI仅显示框架,除Redis信息外,没有其他信息。我不知道这是否重要,但是Sidekiq.redis
perform\u async(ids)
没有向Redis添加任何内容,但我没有收到任何错误。我可以通过Redis.current.append(“test”,“key”)
此外,我的Sidekiq worker还连接到Redis服务器,不过当我请求Sidekiq::Client.registered_workers
时,我得到一个空数组。web UI仅显示框架,除Redis信息外,没有其他信息。我不知道这是否重要,但是Sidekiq.redis{| conn | conn.info}
返回的信息在我的本地redis服务器上都是正确的。虽然Sidekiq.server?
返回一个nil值
更新:当我执行
perform\u async(args)
时,它返回一个字符串。听起来您的Sidekiq配置没有为Sidekiq的客户端和服务器组件使用相同的redis配置
客户机在Rails应用服务器中执行,而服务器是一个独立的进程,在该进程中执行工作。如果它们通过redis配置不使用相同的redis队列,则不会处理工作
下面是一个示例config/initializers/sidekiq.rb
config块,对两个组件使用相同的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
,并且显然中断了异步调用以进行测试
解决方案是修改我的Gemfile
:
gem 'rspec-sidekiq', group: :test, require: false
最后,我在我的
spec\u helper.rb
中添加了require'rspec sidekiq'
,明显的问题:您运行的是最新的sidekiq(2.14.1),是否安装了Redis 2.4或更高版本?您至少使用了Ruby 1.9.3?对不起,我已经有了一个sidekiq.rb
,它将服务器和客户端配置为相同的命名空间和Redis地址。