我目前正在使用gem Carrierwave
将文件上传到我的AWS s3帐户。但我会上传一些大文件,所以我担心服务器超时而用户不得不等待。
任何人都有任何建议将其转移到后台工作以及如何实现这一目标?我看过sidekiq
,但我想找出从哪里开始。当我尝试实现它时,即使文件在Rails
中取得成功,该文件也似乎无法上传。
答案 0 :(得分:2)
有一个gem carrierwave_backgrounder
可帮助您在后台排队文件上传
将gem carrierwave_backgrounder
添加到Gemfile
并捆绑
添加初始化文件config/initializers/carrierwave_backgrounder.rb
以配置后台处理器。如果您使用sidekiq
CarrierWave::Backgrounder.configure do |c|
c.backend :sidekiq, queue: :carrierwave
end
然后,在您的模型上使用它以及您的carrierwave上传器
class User < ActiveRecord::Base
mount_uploader :avatar, AvatarUploader
process_in_background :avatar
end
重要!强>
您应该在:carrierwave
config/sidekiq.yml
队列
:queues:
- [carrierwave, 1]
- default
答案 1 :(得分:1)
最好的方法是使用Carrierwave Direct,因为它完全绕过了rails服务器。然后,您可以将实际处理作为后台任务(我推荐Sidekiq,但使用您想要的任何内容。)