我有一个RoR应用程序,后台作业使用的时候和侧面的宝石。
在开发环境中,当我使用本地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发布于 2014-01-15 21:43:41
也许你连接到错误的红宝石数据库,或者根本没有连接。在我的应用程序中,我使用的是redis url,没有后面的斜杠。就你而言:
这是用于数据库"0“的
redis://user:pass@spinyfin.redistogo.com:9098这个用于数据库"1“
redis://user:pass@spinyfin.redistogo.com:9098/1发布于 2014-06-20 14:47:45
我使用环境变量REDIS_URL来确保所有东西都使用相同的Redis。
Re: Heroku --当我寻找自己的解决方案时,我刚刚读到了这个这里:
如果在Heroku上运行,则不能依赖
config/database.yml,因为该平台依赖于DATABASE_URL环境变量来确定数据库连接配置。Heroku在段塞编译期间覆盖database.yml,以便从DATABASE_URL读取。
https://stackoverflow.com/questions/20288961
复制相似问题