【发布时间】:2015-06-13 01:57:40
【问题描述】:
我有相当数量的回形针附件(~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 任务。
所以我的问题是。
- 无论如何要改进这一点并吸取以前的经验教训
- 如果可以只为新样式跳过生成。也许
refresh:thumbnails和STYLE是更好的方法
提前谢谢你
编辑:
我结束了编写一个 rake 任务,该任务将每个附件排队到 sidekiq 低优先级队列和一个工作人员以出列并处理这些排队的作业。到目前为止,这运行良好,速度不是很快,但它超出了我的范围,并且以令人满意的方式在后台发生。这种方法也可以通过添加更多的 Rails 实例来轻松实现并行化,因为它们每个都有自己的一组 Sidekiq 工作器
【问题讨论】:
标签: ruby-on-rails amazon-s3 paperclip fog