如何在 运行 内存不足的情况下在 Play 中分块响应
How to chunk responses in Play without running out of memory
我正在遍历一个大型数据集,从 onReady
.
中定期调用 play.mvc.Results.Chunks.Out.write(...)
因为写入的速度比数据发送到客户端的速度快,我经常 运行 一段时间后内存不足...那么正确的方法是什么?
不幸的是,这是目前 Play 中 Java API 的限制。 JavaAPI中没有办法从客户端得到背压,所以很容易压垮客户端。当我们向 Java 客户端提供更好的流 API 时,这将在 Play 3 中修复,可能基于 Akka Streams.
如果你真的需要解决这个问题,那么你可以在 Scala 中基于 Play 的 Enumerators 编写一个小程序,然后将它包装起来,这样你就可以从你的 Java 程序中访问它。
我正在遍历一个大型数据集,从 onReady
.
play.mvc.Results.Chunks.Out.write(...)
因为写入的速度比数据发送到客户端的速度快,我经常 运行 一段时间后内存不足...那么正确的方法是什么?
不幸的是,这是目前 Play 中 Java API 的限制。 JavaAPI中没有办法从客户端得到背压,所以很容易压垮客户端。当我们向 Java 客户端提供更好的流 API 时,这将在 Play 3 中修复,可能基于 Akka Streams.
如果你真的需要解决这个问题,那么你可以在 Scala 中基于 Play 的 Enumerators 编写一个小程序,然后将它包装起来,这样你就可以从你的 Java 程序中访问它。