2017-05-02 4 views
0

私は現在、AWS s3アカウントにファイルをアップロードするにはCarrierwaveという宝石を使用しています。しかし、大きなファイルをアップロードしているので、サーバーのタイムアウトとユーザーの待ち時間が心配です。 これをバックグラウンドジョブに移行するための提案はありますか?私はsidekiqを見ましたが、どこから始めたらいいか分かりません。私がそれを実装しようとすると、do34はアップロードされるように見えますが、それはRailsで成功します。レールウェイを使ってファイルをバックグラウンドでアップロードするには?

+0

と一緒にあなたのモデルにそれを使うのか?サイドキック? – sa77

+0

はい、 'sidekiq'と' carrierwave_backgrounder'です。 – Corey

答えて

1

Carrierwave Directは、レールサーバーを完全にバイパスするために最も良い方法です。あなたは、あなたがバックグラウンドで

をお使いのファイルのアップロードをキュー助けるために宝石carrierwave_backgrounderがあります(私はSidekiqをお勧めしますが、あなたが望むものは何でも使用。)バックグラウンドタスクとして

0

を実際の処理を行い、あなたのGemfilegem carrierwave_backgrounderを追加することができますし、同梱

バックグラウンドプロセッサを構成するためにイニシャライザファイル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 
+0

これを試しましたが、 'sidekiq'はジョブを処理しません。代わりに、それは正常にアップロードするだけです...私は 'redis'と' sidekiq'を実行しています。 @ sa77 – Corey

関連する問題