ユーザーがクロールする URL のリスト (場合によっては 200k) を含む CSV ファイルをアップロードできるようにする Rails アプリがあります。次に、コントローラーでこのファイルの各行に移動し、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を使用できると考えていましたか?もしそうなら、どこから始めるべきですか?