我正在使用 Akka 2.4.7 来读取 Web 资源,该资源本质上是一个 JSON 对象流,以换行符分隔。流的大小实际上是无限的。
当消耗了大约 8MB 时,我得到一个例外:
[error] (run-main-0) EntityStreamSizeException: actual entity size (None) exceeded content length limit (8388608 bytes)! You can configure this by setting `akka.http.[server|client].parsing.max-content-length` or calling `HttpEntity.withSizeLimit` before materializing the dataBytes stream.
Run Code Online (Sandbox Code Playgroud)
“实际实体大小(无)”似乎有点有趣,但我真正的问题是,如何使用HttpEntity.withSizeLimit(或者在我的情况下,.withoutSizeLimit也应该在那里)。
我的请求代码是这样的:
val chunks_src: Source[ByteString,_] = Source.single(req)
.via(connection)
.flatMapConcat( _.entity.dataBytes )
Run Code Online (Sandbox Code Playgroud)
我尝试添加一个.map( (x: HttpResponse) => x.withoutSizeLimit ),但它无法编译。HttpEntity无论如何,在进行客户端编程时的作用是什么?
我可以更改全局配置,但这有点错过了。我只想为特定请求标记“无限制”。
作为进一步的问题,我理解在max-content-length服务器端需要 a ,但为什么会影响客户端?
参考:
我远不是这个主题的专家,但似乎您需要将.withoutSizeLimit()加到实体中,例如:
Source.single(req)
.via(connection)
.flatMapConcat( _.entity.withoutSizeLimit().dataBytes )
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1367 次 |
| 最近记录: |