У меня есть приложение Rails, которое позволяет пользователю загружать CSV-файл со списком (иногда 200 тыс.) URL-адресов для сканирования. Затем в контроллере я перейду к каждой строке этого файла, а затем вызову другой метод, который принимает URL-адрес и несколько параметров, а затем, когда метод обхода будет выполнен, сохраните несколько переменных в нескольких моделях. Ниже показано, как выглядит мой контроллер:
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? если да, то с чего мне начать?