Sidekiq的工作在Heroku上排队

And*_*iss 7 ruby heroku redis sidekiq ruby-on-rails-4

我有一个Sidekiq工作者在本地运行良好,但当部署到Heroku时,作业被卡在队列中.我正在使用Redis-to-go nano并将其启动并运行,并且我已经在Heroku上将工作者缩放到1并且可以看到它已经启动.我只是使用默认队列 - 没有自定义或花哨.这是我的代码:

配置/ unicorn.rb:

Sidekiq.configure_client do |config|
  config.redis = { size: 1, namespace: 'sidekiq' }
end
Run Code Online (Sandbox Code Playgroud)

配置/初始化/ redis.rb

uri = URI.parse(ENV["REDISTOGO_URL"] || "redis://localhost:6379")
REDIS = Redis.new(:url => ENV['REDISTOGO_URL'])
Run Code Online (Sandbox Code Playgroud)

Procfile

web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb
worker: bundle exec sidekiq -c 5 -v -q default
Run Code Online (Sandbox Code Playgroud)

我可以看到队列中的作业,但它不像本地那样处理.任何建议都非常感谢 - 谢谢!

And*_*iss 6

不确定问题究竟是什么,但是在本教程之后我做了一些修改:http: //manuelvanrijn.nl/blog/2012/11/13/sidekiq-on-heroku-with-redistogo-nano/

简而言之,我将配置移动到sidekiq.rb初始化程序中,并删除了所有url和名称空间信息.

require 'sidekiq'

Sidekiq.configure_client do |config|
config.redis = { :size => 1 }
end

Sidekiq.configure_server do |config|
config.redis = { :size => 4 }
end
Run Code Online (Sandbox Code Playgroud)

我引用的教程链接有一个方便的计算器来确定正确的大小值.仍然不确定这是否是绊倒我或者Mark的答案中提到的某些版本的命名空间冲突.

另外,我没有使用本教程的sidekiq.yml部分,因为sidekiq wiki说较新版本的rails不喜欢它.相反,我在Procfile的bundle exec命令中将并发设置为2,如下所示:

worker: bundle exec sidekiq -c 2  
Run Code Online (Sandbox Code Playgroud)

希望这对将来有类似问题的人有所帮助!感谢所有试图提供帮助的人.