0

私の写真を attachment_fu から Carrierwave に変換するレーキ タスクがあります。

これを高速化するために、タスクを:convert複数回並行して実行する方法はありますか?

これが私の作業タスクです:

namespace :photos do
  task :convert => :environment do
    Item.all.each do |item|
      item.photos.each do |photo|
        new_photo = ItemPhoto.new :photo => File.open(File.join(Rails.root, "public", photo.public_filename)),
                                  :item_id => item.id

        new_photo.save
      end
      item.update_attribute :migrated, true
    end     
  end
end
4

1 に答える 1

0

パラレルジェムを見てみる

8 つの同時プロセスの場合、次のようになります。

namespace :photos do
  task :convert => :environment do
    Parallel.each(Item.all, :in_processes => 8) do |item|
       item.photos.each do |photo|
          new_photo = ItemPhoto.new :photo => File.open(File.join(Rails.root, "public", photo.public_filename)),
                              :item_id => item.id

          new_photo.save
       end
       item.update_attribute :migrated, true
    end
  end
end

`

于 2015-12-03T11:10:21.280 に答える