trait Timeout extends AnyRef
This trait is used to provide a non-blocking timeout on an operation that returns a Future.
Please note that the play.api.Application default ActorSystem should be used as input here, as the actorSystem.scheduler is responsible for scheduling the timeout, using akka.pattern.actor under the hood.
You can dependency inject the ActorSystem as follows to create a Future that will timeout after a certain period of time:
class MyService(val actorSystem: ActorSystem) extends Timeout { def calculateWithTimeout(timeoutDuration: FiniteDuration): Future[Int] = { timeout(actorSystem, timeoutDuration)(rawCalculation()) } def rawCalculation(): Future[Int] = { import akka.pattern.after implicit val ec = actorSystem.dispatcher akka.pattern.after(300 millis, actorSystem.scheduler)(Future(42))(actorSystem.dispatcher) } }
You should check for timeout by using Future.recover() or Future.recoverWith() and checking for TimeoutException:
val future = myService.calculateWithTimeout(100 millis).recover { case _: TimeoutException => -1 }
- Annotations
- @deprecated
- Deprecated
(Since version 2.6.0) Use play.api.libs.concurrent.Futures.timeout
- Source
- Timeout.scala
- See also
- Alphabetic
- By Inheritance
- Timeout
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
timeout[A](actorSystem: ActorSystem, timeoutDuration: FiniteDuration)(f: Future[A]): Future[A]
Creates a future which will resolve to a timeout exception if the given Future has not successfully completed within timeoutDuration.
Creates a future which will resolve to a timeout exception if the given Future has not successfully completed within timeoutDuration.
Note that timeout is not the same as cancellation. Even in case of timeout, the given future will still complete, even though that completed value is not returned.
- A
the result type used in the Future.
- actorSystem
the application's actor system.
- timeoutDuration
the duration after which a Future.failed(TimeoutException) should be thrown.
- f
a call by value Future[A]
- returns
the future that completes first, either the failed future, or the operation.
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()