2011-10-21 47 views
11

HeROkuに展開されたRefineryCMS 1.0.8 に基づいてアプリケーションに問題が発生しました。大きなファイルをs3にアップロードするときのHerokuのタイムアウト

Herokuの要求タイムアウトは30秒です。 RefineryCMS管理者からファイル> 4MOをアップロードすると、要求を実行するのに(おそらく がファイルをs3にアップロードするのに必要な時間のため)、 30秒以上かかることがあります。

この場合、dynoは「フリーズ」され、約30分(この時間中のすべての要求がH12エラー要求のタイムアウトによって終了します。 )まで応答しません。 この動作は、このother discussionthe heroku documentation からthis discussion

の最後のメッセージにクリストスを正確に何を説明されています。「あなたは4メガバイトより大きいファイルのアップロードを扱う ならS3への直接アップロードが好ましいアプローチであるという考えがあります。あなたのdynoにホップ をスキップして、エンドユーザのブラウザから直接 をS3に接続します。

S3へのダイレクトアップロードが解決策になるはずですが、 RefineryCMS/Dragonfly/Fogで正しく実装することが難しいようです。私は、これらのツールで大きな変更なしに可能であるかどうかわからないし、代替があるかどうか疑問に思っています。

ありがとうございます。

答えて

4

本当にありません。 Herokuのタイムアウトは、あなたが回避する必要がある石のもののセットです。 S3へのダイレクトアップロードは唯一のオプションで、何らかのポストアップロード処理が必要です。

そこには、CarrierWaveDirectなどの解決策がありますが、これはRefineryでどの程度簡単に使用できるかわかりません。

+0

実際に石に設定されていません。イベントレットなどのイベントソリューションを使用している場合、タイムアウトを高く設定することができます(私は60秒に設定し、48秒でアプリケーションに正常に写真をアップロードしました)、Herokuは気にしません。ブロッキング。 –

-4

アプリケーションにユニコーンを追加しようとする可能性があります。

のconfig/unicorn.rb

整数worker_processes(ENV [ "WEB_CONCURRENCYを"] || 3)

タイムアウト180#< <ユニコーンタイムアウトは長いアップロード時間をできるようになります。

preload_app真

before_fork行う|サーバー、労働者|

https://devcenter.heroku.com/articles/rails-unicorn

+0

これはherokuのタイムアウトを無効にしますか? – superluminary

+0

レールを使用しているとき、s3のアップロードが完了するのを180秒のタイムアウトで許可しました.-私はHerokuがデフォルトでタイムアウトがユニコーンに設定されているものにデフォルト設定していると思います。 – BIT

+2

Herokuルータは、アプリケーションunicorn設定で設定されているものをデフォルトにしません。 –

関連する問題