【问题标题】:Finatra - reading a request in chunksFinatra - 分块读取请求
【发布时间】:2015-04-18 04:59:29
【问题描述】:

这是我的用例: 我正在实现一个 finatra 服务器,它应该能够接收许多并发的大请求。 这些请求有一个很大的主体(几兆字节),由许多连接在一起的小 json 对象组成。

我想避免将整个请求正文加载到内存中。我正在寻找一种方法来分块读取请求正文,并使用支持这种异步解析的 json 解析器。

在 node.js 中,这可以通过使用 jsonp 包来实现(参见示例 - https://github.com/jaredhanson/node-jsonsp/blob/master/examples/twitter-stream/app.js)。

我可以用 finatra 做类似的事情吗(以及如何做)?

PS - 我也发布了问题here,但目前没有得到答案。

【问题讨论】:

  • 如果您对流媒体和高性能感兴趣,可能需要查看新的惯用的 http4s 库。
  • 谢谢。这看起来真的很有趣。我去看看

标签: json scala finatra


【解决方案1】:

目前 Finatra 无法做到这一点。在收到整个请求并将其存储到 ChannelBuffer 之前,Finatra 不会调用您的路由。此外,Finatra 还将请求读取为单个块,因此您无法接收任何超过 ~2MB 的正文。将com.twitter.finatra.config.maxRequestSize 设置为高于 2048 的值会导致它在运行时崩溃。

我已使用 NettyServer embed 和“String Interpolating Routing DSL”切换到 Play Framework,以保留类似于 Finatra 的 DSL。

【讨论】:

    猜你喜欢
    • 2014-10-19
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 2018-03-25
    • 1970-01-01
    • 1970-01-01
    • 2020-03-18
    • 1970-01-01
    相关资源
    最近更新 更多