作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我有一个 Sidekiq worker 在本地运行良好,但是当部署到 Heroku 时,作业会卡在队列中。我正在使用 Redis-to-go nano 并启动并运行它,我已将 Heroku 上的工作人员扩展到 1,并且可以看到它已启动。我只是使用默认队列——没有任何自定义或花哨的东西。这是我的代码:
配置/ unicorn .rb:
Sidekiq.configure_client do |config|
config.redis = { size: 1, namespace: 'sidekiq' }
end
配置/初始化程序/redis.rb
uri = URI.parse(ENV["REDISTOGO_URL"] || "redis://localhost:6379")
REDIS = Redis.new(:url => ENV['REDISTOGO_URL'])
简介
web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb
worker: bundle exec sidekiq -c 5 -v -q default
我可以在队列中看到作业,但它的处理方式与本地不同。非常感谢任何建议 - 谢谢!
最佳答案
不确定到底是什么问题,但是按照本教程进行一些修改对我来说是可行的: 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
我引用的教程链接有一个方便的计算器来确定正确的尺寸值。仍然不确定这是否是让我绊倒的原因,还是 Mark 的回答中提到的某些版本的命名空间冲突。
另外,我没有使用本教程的 sidekiq.yml 部分,因为 sidekiq wiki 说新版本的 rails 不喜欢它。相反,我在 Procfile 的 bundle exec 命令中将并发设置为 2,如下所示:
worker: bundle exec sidekiq -c 2
希望这对以后遇到类似问题的人有所帮助!感谢所有试图提供帮助的人。
关于ruby - Sidekiq 作业在 Heroku 上排在队列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26263024/
我是一名优秀的程序员,十分优秀!