如何在 Akka-http(客户端)HttpRequest 中使用 .withoutSizeLimit?

aka*_*ppi 4 akka-http

我正在使用 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 ,但为什么会影响客户端?

参考:

Ben*_*min 5

我远不是这个主题的专家,但似乎您需要将.withoutSizeLimit()加到实体中,例如:

Source.single(req)
  .via(connection)
  .flatMapConcat( _.entity.withoutSizeLimit().dataBytes )
Run Code Online (Sandbox Code Playgroud)