Trait/Object

play.api.libs.concurrent

Timeout

Related Docs: object Timeout | package concurrent

Permalink

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
}
Source
Timeout.scala
See also

Futures and Promises

Linear Supertypes
AnyRef, Any
Known Subclasses
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. Timeout
  2. AnyRef
  3. Any
  1. Hide All
  2. Show all
Visibility
  1. Public
  2. All

Value Members

  1. final def !=(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  5. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  6. final def eq(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  7. def equals(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  8. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  9. final def getClass(): Class[_]

    Permalink
    Definition Classes
    AnyRef → Any
  10. def hashCode(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  11. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  12. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  13. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
  14. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
  15. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  16. def timeout[A](actorSystem: ActorSystem, timeoutDuration: FiniteDuration)(f: Future[A]): Future[A]

    Permalink

    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.

  17. def toString(): String

    Permalink
    Definition Classes
    AnyRef → Any
  18. final def wait(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  19. final def wait(arg0: Long, arg1: Int): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  20. final def wait(arg0: Long): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from AnyRef

Inherited from Any

Ungrouped