我已经设置了直接上传到神社的S3。这很好用。在其他插件中,我启用了以下插件:
Shrine.plugin :backgrounding
Shrine.plugin :store_dimensions
Shrine.plugin :restore_cached_data如果我错了,请纠正我,但图像尺寸提取似乎是同步完成的。如果我让用户通过Uppy批量上传图片,然后将它们全部持久化,这似乎需要很长时间。
我想要做的是异步执行图像尺寸提取-我不需要缓存文件可用的尺寸。如果可能,当文件被提升到存储时,我希望在后台执行此操作。有办法做到这一点吗?
发布于 2018-12-25 21:41:57
我的工作方式是使用:refresh_metadata插件,而不是我最初使用的:restore_cached_data。感谢Janko为pointing me指明了正确的方向。
阅读源代码提供了一些有用的见解。:store_dimensions插件本身并不提取维度-它将宽度和高度提取到元数据散列中,因此当adds的基类requests metadata时,它们也会被提取出来。
通过使用:restore_cached_data,这可以在每个任务上完成。:restore_cached_data uses :refresh_metadata在内部,因此我们可以使用该知识仅在文件升级到存储时调用它。
我在初始化器中设置了:backgrounding和:store_dimensions,所以最终的上传器可以简化为:
class ImageUploader < Shrine
plugin :refresh_metadata
plugin :processing
process(:store) do |io, context|
io.refresh_metadata!(context)
io
end
end以这种方式持久化我们从Uppy获得的数据是超级快的,并且我们让后台作业在文件被提升到存储时提取维度,所以它们可以在以后使用。
最后,如果你有关于神社的问题,我强烈推荐它的专用Google Group。感谢Janko不仅创建了一个令人惊叹的软件(说真的,请阅读源代码),而且还感谢他对社区的支持。
https://stackoverflow.com/questions/53916740
复制相似问题