5

我正在使用播放框架 2.1 调用 web 服务,这需要超过 10 秒。因此,我总是收到以下错误:

play.api.Application$$anon$1: Execution exception[[TimeoutException: Futures timed out after [10000 milliseconds]]]
    at play.api.Application$class.handleError(Application.scala:289) ~[play_2.10.jar:2.1.0]
    at play.api.DefaultApplication.handleError(Application.scala:383) [play_2.10.jar:2.1.0]
    at play.core.server.netty.PlayDefaultUpstreamHandler$$anon$2$$anonfun$handle$1.apply(PlayDefaultUpstreamHandler.scala:132) [play_2.10.jar:2.1.0]
    at play.core.server.netty.PlayDefaultUpstreamHandler$$anon$2$$anonfun$handle$1.apply(PlayDefaultUpstreamHandler.scala:128) [play_2.10.jar:2.1.0]
    at play.api.libs.concurrent.PlayPromise$$anonfun$extend1$1.apply(Promise.scala:113) [play_2.10.jar:2.1.0]
    at play.api.libs.concurrent.PlayPromise$$anonfun$extend1$1.apply(Promise.scala:113) [play_2.10.jar:2.1.0]
java.util.concurrent.TimeoutException: Futures timed out after [10000 milliseconds]
    at scala.concurrent.impl.Promise$DefaultPromise.ready(Promise.scala:96) ~[scala-library.jar:na]
    at scala.concurrent.impl.Promise$DefaultPromise.ready(Promise.scala:58) ~[scala-library.jar:na]
    at scala.concurrent.Await$$anonfun$ready$1.apply(package.scala:86) ~[scala-library.jar:na]
    at scala.concurrent.Await$$anonfun$ready$1.apply(package.scala:86) ~[scala-library.jar:na]

如何增加超时值?

我试图改变以下值:

promise.akka.actor.typed.timeout
play.akka.actor.typed.timeout

但没有成功...

在此先感谢您的帮助

4

3 回答 3

2

不幸的是,它在框架中是硬编码的......见https://github.com/playframework/Play20/blob/master/framework/src/play/src/main/scala/play/api/libs/concurrent/ Promise.scala#L266

似乎已经打开了一个问题:https ://github.com/playframework/Play20/issues/1002

于 2013-05-15T09:52:23.153 回答
2

看起来它已在 2.3 中修复,但他们不会将端口移植到任何 2.2 版本

    javaOptions in Test += "-Dtest.timeout=10000"

由于我使用的是 2.2,这对我不起作用,但我希望它适用于 2.3 的用户

于 2015-03-17T17:30:43.007 回答
0

如果你正在编写单元测试,你会这样做。

@Test
public void testInServer() {
    running(testServer(3333), new Runnable() {
        public void run() {
            assertThat(
                WS.url("http://localhost:3333").get().get(timeout).getStatus()
            ).isEqualTo(OK);
        }
    });
}
于 2015-09-10T01:51:44.417 回答