我有一个 Rails 应用程序,它允许用户上传一个 CSV 文件,其中包含一个要抓取的 URL 列表(有时是 200k)。然后在控制器中,我将转到该文件的每一行,然后调用另一个带有 URL 和一些参数的方法,然后当 crawl 方法完成后,将一些变量保存到几个模型中。下面是我的控制器的样子:
def import
if request.post? && params[:inputfile].present?
infile = params[:inputfile].read
CSV.parse(infile) do |row|
@crawler = Crawler.new(row[0])
@crawler.crawl #do the actual crawling using Mechanize Gem and set a few variable in the crawler object
#when crawl is done save a few stuff into some models
end
end
end
我需要将其移至后台(因此此过程不会保留我的整个 rails 应用程序),并且能够异步运行每一行的代码。我在想像把所有东西都放在一个队列中,并在每一行的队列中排队......或者类似的东西。我在想我可以为此使用 Resque 或 Sidekiq 吗?如果是这样,我应该从哪里开始?