2011-01-25 4 views
3

私は現在FCGIハンドラでSinatraアプリを実行しています。私は(おそらくSinatraアプリの前に)ラックアップファイル内に座るハンドラを書いて、大きなファイルのアップロードをソケット経由で別のサーバにストリームして(ディスクにバッファリングせずに)、リクエストに連動して処理します。だから私がしたいのは、何らかの種類のストリームデコードで、パラメを準備せずにワークフローを送信することです。私はどこかでこれに問題があると読んだのは、特にRailsチームがミドルウェアのパイプラインを見たいと思っているからです.Rackのすべてのアップロードがリワインド可能になっています。これはアップロードがバッファされることを意味します。 Rack内でアップロードの進捗状況が表示されますが、ファイルをディスクにバッファリングしてから下流に送信する必要があります。Rackでソケットにウェブストリーミングをアップロード

ウェブサーバのリクエストループをRackレスポンダに結びつけ、入力に巻き戻しを強制しないクロスバックエンドソリューションがあります(アップロードのメモリ内のバッファリングは絶対に馬鹿げていません) ?この種の問題に対する現在のアプローチは何ですか?

答えて

3

あなたは正しいです:Rack specは、巻き戻し可能な入力を要求します。これはバッファリングを意味します。 Rackはこの仕事のツールではないようだ。

実際にはバッファリングされていないストリーミングを許可するFastCGIを試してみてください。あるいはJavaサーブレットかもしれません。私2¢:あなたは本当にそれが必要ですか?もしそうでなければ、ディスクスペースは本当に安いと心配しないでください。もしそうなら、あなたは本当にRubyでそれをする必要がありますか?

編集:雑種:: HTTPRequestの方法悲しい

+0

(monkeypatchingなし)ないサポートバッファなし大きなストリーミング入力を行います。私は、Rackのディスパッチャーのための何らかのフロントエンドラッパーが必要になると思われます。 – Julik

+0

また、http://upr.bogomips.org/ – Julik

+2

@Julik @Johnのように見えます。http://groups.google.com/group/rack-devel/msg/600825afa08474d8 - 私あなたがまだそれを見ていないなら、あなたが興味があるかもしれないと思った。 – matt

関連する問題