3

現在、FCGIハンドラーでSinatraアプリを実行しています。ラックアップファイル内(おそらくSinatraアプリの前)に配置され、大きなファイルのアップロードをソケット経由で(最初にディスクにバッファリングせずに)別のサーバーにストリーミングし、リクエストと連動して実行するハンドラーを作成したいと思います。だから私がやりたいのは、パラメータを準備せずに、ある種のストリーム-デコード-送信ワークフローです。Railsチームがミドルウェアパイプラインを見たいという方法のために、Rack内のすべてのアップロードが巻き戻し可能になっているため、これに問題があることをどこかで読みました。これは、アップロードがバッファリングされることを意味するため、提供できないだけではありません。アップロードはRack内で進行しますが、ファイルをディスクにバッファリングしてからダウンストリームに送信する必要もあります。

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

4

1 に答える 1

3

その通りです。ラック仕様では、巻き戻し可能な入力が義務付けられています。これは、バッファリングを意味します。ラックはこの仕事のためのツールではないようです。

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

編集:Mongrel :: HTTPRequestは、バッファリングされていない大規模なストリーミング入力をサポートしていません(モンキーパッチなし)

于 2011-01-25T18:25:59.957 に答える