将 spray 1.3.2 与 akka 2.3.6 一起使用。(akka 仅用于喷雾)。
我需要读取大文件并为每一行发出一个 http 请求。
我用迭代器逐行读取文件,并为每个项目提出请求。它在某些行上成功运行,但在某些时候它开始失败:
akka.pattern.AskTimeoutException: Ask timed out on [Actor[akka://default/user/IO-HTTP#-35162984]] after [60000 ms]
。
我首先认为我超载了服务,所以我将“spray.can.host-connector.max-connections”设置为 1。它运行得慢得多,但我得到了同样的错误。
这里的代码:
import spray.http.MediaTypes._
val EdnType = register(
MediaType.custom(
mainType = "application",
subType = "edn",
compressible = true,
binary = false,
fileExtensions = Seq("edn")))
val pipeline = (
addHeader("Accept", "application/json")
~> sendReceive
~> unmarshal[PipelineResponse])
def postData(data: String) = {
val request = Post(pipelineUrl).withEntity(HttpEntity.apply(EdnType, data))
val responseFuture: Future[PipelineResponse] = pipeline(request)
responseFuture
}
dataLines.map { d =>
val f = postData(d)
f.onFailure { case e => println("Error - "+e)} // This is where the errors are display
f.map { p => someMoreLogic(d, p) }
}
aggrigateResults(dataLines)
我这样做是因为我不需要整个数据,只需要一些聚合。
我该如何解决这个问题并让它完全异步?