3

我目前有一个在 FCGI 处理程序中运行的 Sinatra 应用程序。我想编写一个处理程序,它将位于 rackup 文件中(可能在 Sinatra 应用程序的前面),并将通过套接字将大文件上传流式传输到另一台服务器(而不首先在磁盘上缓冲它)并与请求联锁。所以我想做的是某种没有参数准备的流解码发送工作流。我在某处读到这有问题,因为特别是由于 Rails 团队希望看到中间件管道的方式,Rack 中的所有上传都已设为可重绕,这意味着上传将被缓冲,所以不仅我不能提供Rack 中的上传进度,但我还必须在磁盘上缓冲文件,然后将其发送到下游。

是否有一些跨后端解决方案将网络服务器的请求循环与机架响应程序联系起来,并且不强制回退输入(并且不强制上传的内存缓冲,这绝对是愚蠢的疯狂)?目前解决这类问题的方法是什么?

4

1 回答 1

3

你是对的:机架规范要求可倒带输入,这意味着缓冲。看来 Rack 不是这项工作的工具。

您可能想尝试 FastCGI,它确实允许非缓冲流。或者可能是一个 Java Servlet。我的 2¢:你真的需要它吗?如果没有,请不要担心,磁盘空间真的很便宜。如果是这样,你真的需要用 Ruby 来做吗?

编辑:Mongrel::HTTPRequest 不支持无缓冲的大型流输入(没有猴子补丁)

于 2011-01-25T18:25:59.957 回答