我有一个 resque 工作人员,它工作得很好,但太慢了。主要原因是我正在使用 activerecord 并且必须加载整个环境,这至少需要 10-20 秒才能加载(我不会一直保持运行的工作线程,因为我使用 Heroku 并付费工作人员运行的时间)。我正在使用 resque 工作程序从外部网站获取和解析数据,然后将数据转储到我的数据库中。
我的问题是我是否应该重写该方法以不使用 Rails 而是使用 DataMapper?或者其他比 activerecord 加载速度更快的东西。
或者我是否应该提取代码(使用 ActiveRecord)来确定如何处理外部数据并将其从工作程序中移出并返回到应用程序中?
希望这是有道理的。
我也有同样的问题。
您可以在 rake resque:setup rake 任务上设置环境
我试过这个。假设我的 rake resque 任务已开启lib/tasks/resque.rake
require "resque/tasks"
task "resque:setup" do
root_path = "#{File.dirname(__FILE__)}/../.."
db_config = YAML::load(File.open(File.join(root_path,'config','database.yml')))["development"]
ActiveRecord::Base.establish_connection(db_config)
require "#{root_path}/app/workers/photo_downloader.rb" #workers
#Dir.glob("#{root_path}/app/models/*").each { |r| puts r; require r } #require all model
require "#{root_path}/app/models/photo.rb" # require model individually
end
我还没有完全成功,因为我使用 Paperclip gem 需要 Rails 环境
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)