def resolve(url: String): Future[WSResponse] = ws.url(url).withFollowRedirects(true).get()
def validateAllLinks(links: List[String]) = ???
どのように2番目の機能を解決しますか?ScalaWS(Play!)と並行してhttp-URLのリストを解決するには?
def validateAllLinks(links: List[String]) = links.map(link =>
Await.result(resolve(link), Duration.create(3, TimeUnit.SECONDS))
)
このアプローチの問題:私は取得
私はトラバース、Future.sequence、待つを試してみました
...
は、これは私の最も最近の試みでしたTimeoutExceptionsとMaxRedirectExceptionを試してみたい/キャッチしたくないと思う。
私は解決策が並行しているとは思わない、たとえそれが働いても。
ありがとうございます!
正しい、しかし、それはないことを、このアプローチに問題があります個々の要求のタイムアウトとエラーを処理できます。おそらくこのリンク:https://stackoverflow.com/questions/17466889/run-multiple-futures-in-parallel-return-default-value-on-timeoutが役立ちます。 – igorpcholkin
そうですね、私の解決策はそれを並行させることでした。タイムアウトを処理するには、resolveメソッドで 'ws.url(url).withRequestTimeout(timeout)'を使うべきです。そして、 'resolve(..)。map(..)。recovery(..)'はどのマップが失敗し、どのマップが成功するかを理解するために使われるべきです。 – Feyyaz