scala – 如何在Play中重复请求!框架2.1?
发布时间:2020-12-16 10:03:57 所属栏目:安全 来源:网络整理
导读:有没有简单的方法来重复请求,直到获得成功结果Play2.1( scala)?以及如何限制尝试次数? 我想做这样的事情: WS.url("some.url").get().map{ response = val strval = someFunction(response) strval match { case "success" = println("do something after
有没有简单的方法来重复请求,直到获得成功结果Play2.1(
scala)?以及如何限制尝试次数?
我想做这样的事情: WS.url("some.url").get().map{ response => val strval = someFunction(response) strval match { case "success" => println("do something after successful request") case "error" => println("repeat same request until success - and repeat maximum N times!") } } 提前致谢! 解决方法
未经测试
你可以这样做: import scala.concurrent._ import play.api.libs.concurrent.Execution.Implicits._ def withRetry[T](retries:Int = 5)(f: => Future[T]) = f.recoverWith { case t:Throwable if (retries > 0) => withRetry(retries - 1)(f) } 然后在您自己的代码中,您可以像这样使用它: withRetry(retries = 2) { WS.url("some.url").get .map { response => require(someFunction(response) != "error","Please retry") response } } 如果您愿意将someFunction重写为Response =>你可以像这样使用它: def someFunction(r: Response): Boolean = ??? withRetry(retries = 2) { WS.url("some.url").get .filter(someFunction) } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |