Nota: el siguiente contenido se aplica a Play! 2.1.x. ¡Para jugar! 2.0.4 ver la respuesta de nico_ekito.
Las interacciones con un cliente se pueden resumir en la siguiente tabla: controlador HTTP

de Juego (construido en la cima de Netty) vive en su propio contexto de ejecución. Cuando recibe una solicitud, intenta encontrar el punto de entrada de la aplicación para llamar de acuerdo con la URL (usando el archivo conf/routes
de la aplicación). En este punto, solo los encabezados de la solicitud HTTP se cargan en la memoria.
A continuación, se llama al punto de entrada. Por lo general, es action, que carga el cuerpo restante, si lo hay. Esto sucede en un contexto de ejecución diferente, el Play! Contexto de ejecución de "usuario", definido como un despachador de actores Akka que se puede configurar en el archivo conf/application.conf
de las aplicaciones.
Finalmente, dentro de una acción puede realizar llamadas asíncronas (por ejemplo, para llamar a Web Service). Todas estas llamadas asincrónicas usan la API Future de Scala, por lo que usan el contexto de ejecución disponible en el alcance en el sitio de la llamada. ¡Entonces puedes usar Play! Contexto de ejecución de "usuario" (definido en play.api.libs.concurrent.Execution.defaultContext
).
En resumen, ¡juega! utiliza contextos de ejecución distintos para las siguientes tareas:
- recibir solicitudes (controlador Netty HTTP);
- acciones de llamada (contexto de ejecución de "usuario").
Y puede usar cualquier contexto de ejecución que desee para sus cálculos asincrónicos (incluido el contexto de ejecución "usuario" Play!).
La idea es que todos los códigos de usuario usen por defecto el juego Play! Contexto de ejecución de "usuario". Si lo bloquea, no podrá ejecutar más código de usuario, pero puede continuar haciendo todo lo demás.
Si realiza cálculos expansivos, le sugiero que utilice un contexto de ejecución dedicado.
Gracias @Julien. Entonces, ¿el contexto de ejecución del usuario (que es el predeterminado) puede ajustarse en 'application.conf'? ¿Cuál es su configuración predeterminada? –
El nombre del operador es 'play', puede configurarlo como cualquier [asignador de Akka] (http://doc.akka.io/docs/akka/2.1.0-RC1/scala/dispatchers.html) –