簡體   English   中英

重新處理大量回形針樣式

[英]Reprocessing large amount Paperclip styles

我有相當數量的回形針附件(〜270k,圖像),我想為其添加其他樣式。 這些都帶有霧存儲在S3上。 從最初的測試和餐巾紙的一些計算來看,這似乎需要大約2周的時間,但這確實不可行。

rake paperclip:refresh:missing_styles

感覺這里似乎是一個明顯的選擇,但似乎它將嘗試為每個附件下載所有樣式,以找出是否確實丟失了。 因為我知道新樣式總是會丟失的,所以這似乎是多余的。

到目前為止,我正在考慮將工作量分配給大約10名工人

NUM_WORKERS = 10
PER_WORKER = (270_000 / NUM_WORKERS)

ranges = []
start = 1

NUM_WORKERS.times do 
  ranges << { start: start, batch: PER_WORKER }
  start += PER_WORKER
end

然后使用ActiveRecord Batch API為每個范圍運行一個rake任務。

所以我的問題是。

  1. 無論如何要改善這一點和以前的經驗教訓
  2. 如果可能的話,僅針對新樣式生成。 也許refresh:thumbnails使用STYLE refresh:thumbnails是更好的方法

先感謝您

編輯:

我結束了編寫rake任務,該任務將每個附件排在sidekiq低優先級隊列上,並由一個工作人員出隊並處理這些排隊的作業。 到目前為止,這種方法運行良好,不是很快,但是不合時宜,並且以令人滿意的方式在后台發生。 通過添加更多的rails實例,還可以輕松實現此方法的並行化,因為它們各自帶有自己的Sidekiq工人集

按照本指南,您只能手動重新處理某種樣式,從而:

my_model.an_attachment.reprocess!(:a_certain_style)

您分配工作負載的方法似乎可行。

我記得曾經看到過一項服務廣告,該服務可以通過直接從S3存儲設備中拉入/推入圖像來處理圖像,也許這將是長期的解決方案,而不是您自己進行繁重的工作。 雖然不記得服務的名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM