我有一个 RoR 应用,其后台作业使用 whenever 和 sidekiq gem。
在开发环境中,当我使用本地 redis 实例(在本地主机上)启动 sidekiq 时,作业一直在毫无问题地执行。但是当我切换到远程 redis 实例(Heroku 附加组件)并重新启动 sidekiq 时,它说它开始处理,但没有任何反应,工作人员也没有做任何工作。
这是我的 config/schedule.rb(用于 whenever 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
最佳答案
也许您连接到错误的 redis 数据库或根本没有连接。 在我的应用程序中,我使用没有尾部斜杠的 redis url。在你的情况下:
这是针对数据库“0”
redis://user:pass@spinyfin.redistogo.com:9098
这是数据库“1”
redis://user:pass@spinyfin.redistogo.com:9098/1
关于ruby-on-rails - 使用本地 redis 但不使用远程的 Sidekiq 处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20288961/