【问题标题】:Sidekiq processing with local redis but not with remoteSidekiq 使用本地 redis 处理但不使用远程
【发布时间】:2013-12-15 20:08:29
【问题描述】:

我有一个使用 wheneversidekiq gems 的带有后台作业的 RoR 应用程序。

在开发环境中,当我使用本地 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

【问题讨论】:

  • 您能找到解决方案吗?
  • 不。放弃。切换到发条和resque gems。

标签: ruby-on-rails redis sidekiq whenever


【解决方案1】:

我使用环境变量REDIS_URL 来确保一切都使用同一个Redis。

回复:Heroku - 我刚刚在寻找自己的解决方案时阅读了这个here

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

【讨论】:

    【解决方案2】:

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

    这是用于数据库“0”

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

    这适用于数据库“1”

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

    【讨论】:

      猜你喜欢
      • 2013-01-22
      • 1970-01-01
      • 2015-01-06
      • 2014-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多