Sidekiq使用本地redis处理但不使用远程处理

时间:2013-11-29 15:25:37

标签: ruby-on-rails redis sidekiq whenever

我有一个带有后台作业的RoR应用程序,每当和 sidekiq 宝石时使用

在开发环境中,当我使用本地redis实例(在localhost上)启动sidekiq时,该作业将继续执行而不会出现问题。但是,当我切换到远程redis实例(Heroku附加组件)并重新启动sidekiq时,它表示它已开始处理,但没有任何反应,工作人员也没有做任何工作。

这是我的config / schedule.rb(每当 gem)

every 2.minutes do
  rake "crawler:crawl"
end

这是我的初始化程序/ redis.rb:

Sidekiq.configure_server do |config|
  config.redis = { :url => 'redis://user:pass@spinyfin.redistogo.com:9098/' }
end

Sidekiq.configure_client do |config|
  config.redis = { :url => 'redis://user:pass@spinyfin.redistogo.com:9098/' }
end

如果我在redis.rb中注释掉内容并运行本地redis实例,则会正常处理作业。但是,当我使用这个远程redis实例时,会显示,然后不会处理任何内容:

2013-11-29T15:09:26Z 95156 TID-ov6y7e14o INFO: Booting Sidekiq 2.13.0 using redis://redistogo:user@spinyfin.redistogo.com:9098/ with options {}
2013-11-29T15:09:26Z 95156 INFO: Running in ruby 1.9.3p327 (2012-11-10 revision 37606) [x86_64-darwin11.4.2]
2013-11-29T15:09:26Z 95156 INFO: See LICENSE and the LGPL-3.0 for licensing details.
2013-11-29T15:09:26Z 95156 INFO: Starting processing, hit Ctrl-C to stop

2 个答案:

答案 0 :(得分:1)

也许您连接到错误的redis数据库或根本没有连接。 在我的应用程序中,我使用redis url而不使用斜杠。在你的情况下:

这是针对数据库“0”

redis://user:pass@spinyfin.redistogo.com:9098

这对于数据库“1”

redis://user:pass@spinyfin.redistogo.com:9098/1

答案 1 :(得分:1)

我使用环境变量REDIS_URL来确保所有内容都使用相同的Redis。

Re:Heroku - 当我在寻找自己的解决方案时,我刚读了这个here

  

如果您在Heroku上运行,则不能依赖config/database.yml,因为该平台依赖于DATABASE_URL环境变量来确定数据库连接配置。 Heroku在slug编译期间覆盖database.yml,以便从DATABASE_URL读取。