我正尝试通过Scala读取大块数据,如此处所述:Scala read continuous http stream
import akka.actor.ActorSystem
import akka.http.scaladsl.Http
import akka.http.scaladsl.model.{Uri, HttpRequest}
import akka.stream.ActorMaterializer
object ChunkTestClient extends App {
implicit val system = ActorSystem("test")
import system.dispatcher
implicit val materializer = ActorMaterializer()
val source = Uri("https://jigsaw.w3.org/HTTP/ChunkedScript")
val finished = Http().singleRequest(HttpRequest(uri = source)).flatMap { response =>
response.entity.dataBytes.runForeach { chunk =>
println(chunk.utf8String)
}
}
}
上面的代码段在大多数情况下都可以正常工作。但是,如果响应数据很大,或者源连续流传输大量数据,则块响应将不起作用,也不会引发任何错误,只会无声地杀死它。这似乎是背压的情况,其中数据产生的速率比消耗的速率要好。有什么方法可以通过akka http流处理大型数据流。上面的代码中可以做些什么来处理客户端的反压力。
答案 0 :(得分:0)
我终于设法在没有SizeLimit()的情况下工作了。我也尝试了使用SizeLimit(),但这对我不起作用。
`
result = df.groupby('Handle', sort=False).apply(myReformat).reset_index(drop=True)
`