这是我的用例:我正在实现一个finatra服务器,它应该能够接收许多并发的大型请求。这些请求有一个很大的主体(几兆字节),由许多连接在一起的小json对象组成。
我希望避免将整个请求正文加载到内存中。我正在寻找一种方法来读取块中的请求正文,并使用支持这种异步解析的json解析器。
在node.js中,这可以通过使用jsonp包来实现(参见示例- https://github.com/jaredhanson/node-jsonsp/blob/master/examples/twitter-stream/app.js)。
我能用finatra做类似的事情吗(以及如何做)?
PS -我也发布了问题here,但到目前为止还没有得到答案。
发布于 2015-04-18 04:59:30
这在Finatra中是不可能的。在收到整个请求并将其存储到ChannelBuffer中之前,Finatra不会呼叫您的路线。此外,Finatra还将请求作为单个块读取,因此您不会收到超过~2MB的任何正文。将com.twitter.finatra.config.maxRequestSize设置为高于2048的值将导致它在运行时崩溃。
我已经切换到使用NettyServer embed和"String Interpolating Routing DSL“的Play框架,以保留类似于Finatra的数字用户线。
https://stackoverflow.com/questions/26757217
复制相似问题