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)
我可以看到队列中的作业,但它不像本地那样处理.任何建议都非常感谢 - 谢谢!
不确定问题究竟是什么,但是在本教程之后我做了一些修改: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)
希望这对将来有类似问题的人有所帮助!感谢所有试图提供帮助的人.