Gra*_*ick 5 ruby-on-rails background-process resque redis sidekiq
我通过标准文件输入接收请求参数中的文件
def create
file = params[:file]
upload = Upload.create(file: file, filename: "img.png")
end
Run Code Online (Sandbox Code Playgroud)
但是,对于大型上传,我想在后台作业中执行此操作。Sidekiq 或 Resque 等流行的后台作业选项依赖于 Redis 来存储参数,因此我不能只通过 Redis 传递文件对象。
我可以使用Tempfile,但在某些平台(例如 Heroku)上,本地存储并不可靠。
我必须有哪些选项才能使其在“任何”平台上可靠?
小智 1
首先,您应该将文件保存在存储上(本地或 AWS S3)。然后将文件路径或uuid作为参数传递给后台作业。
我强烈建议避免在参数上传递 Tempfile。这将对象存储在内存中,该对象可能会过时,从而导致陈旧数据问题。
| 归档时间: |
|
| 查看次数: |
5622 次 |
| 最近记录: |