你好,我正在编写scala代码,以便从API中提取数据。数据是分页的,所以我按顺序提取数据。现在,我正在寻找一种解决方案,将多个页面并行,并坚持以编程方式创建WSClient,而不是注入。
谁有创建WSClient的解决方案?
我找到了一个AhcWSClient(),但它需要隐式地导入参与者系统。
发布于 2019-09-12 23:24:29
当你不能像另一个答案中建议的那样注入一个时,你可以使用create a Standalone WS client:
import akka.actor.ActorSystem
import akka.stream.ActorMaterializer
import play.api.libs.ws._
import play.api.libs.ws.ahc.StandaloneAhcWSClient
implicit val system = ActorSystem()
implicit val materializer = ActorMaterializer()
val ws = StandaloneAhcWSClient()发布于 2018-12-07 22:33:15
没有必要在这里重新发明轮子。我不明白你为什么说不能注射WSClient如果你可以注入一个WSClient,那么你就可以像这样并行地运行这些请求:
class MyClient @Inject() (wsClient: WSClient)(implicit ec: ExecutionContext) {
def getSomething(urls: Vector[String]): Future[Something] = {
val futures = urls.par.map { url =>
wsClient.url(url).get()
}
Future.sequence(futures).map { responses =>
//process responses here. You might want to fold them together
}
}
}https://stackoverflow.com/questions/53660520
复制相似问题