에 대한 재생의 미래를 암시 적 컨텍스트를 정의 :스칼라에서 제공하는 미래의 실행 컨텍스트에 추가 스칼라
import scala.concurrent.ExecutionContext.Implicits.global
재생 다른 실행 컨텍스트를 제공합니다
에 대한 재생의 각을 사용하는
import play.api.libs.concurrent.Execution.Implicits.defaultContext
스칼라?
에 대한 재생의 미래를 암시 적 컨텍스트를 정의 :스칼라에서 제공하는 미래의 실행 컨텍스트에 추가 스칼라
import scala.concurrent.ExecutionContext.Implicits.global
재생 다른 실행 컨텍스트를 제공합니다
에 대한 재생의 각을 사용하는
import play.api.libs.concurrent.Execution.Implicits.defaultContext
스칼라?
당신은 여기에서 답을 찾을 수 있습니다
Play's internal execution context
그 질문이 완료되지 중복하지만 아주 가까운,뿐만 아니라 질문을 다루가 답이다. 짧은에서
:
당신은 플레이에 import scala.concurrent.ExecutionContext.Implicits.global
를 사용하지 않아야합니다. 주석
대답에서 인용에
응답 :
대신 이
ActorSystem
을 사용하는,play.api.libs.concurrent.Execution.Implicits.defaultContext
사용할 수 있습니다.
scala.concurrent.ExecutionContext.Implicits.global
은 스칼라 표준 라이브러리에 정의 된ExecutionContext
입니다. 특수ForkJoinPool
은 차단 방법을 사용하여 잠재적으로 코드를 차단하여 풀에 새 스레드를 생성합니다. Play 응용 프로그램에서 Play를 사용하지 않아야합니다. 따라서 Play에서는 을 제어 할 수 없습니다. 또한주의하지 않으면 많은 스레드를 생성하고 많은 양의 메모리를 사용할 수 있습니다.
일반적으로 메서드 또는 클래스 내에 ExecutionContext
이 필요하면 암시 적 매개 변수 (Scala) 또는 일반 매개 변수 (Java)로 지정해야합니다. Convention은이 매개 변수를 마지막에 넣는 것입니다.
이 규칙은 호출자/작성자가 비동기 효과가 평가되는 위치/방법 /시기를 제어 할 수있게합니다.
이 규칙의 주 예외는 이미 ExecutionContext
인데 발신자/작성자가 효과 평가 대상을 제어하지 않기를 바랍니다.
내가 링크에서 이해하는 것은 Play의 컨텍스트가 Play에서 내부적으로 사용되므로 사용해서는 안된다는 것입니다. 따라서 스칼라의 실행 컨텍스트를 사용해야한다. (당신이 말하는 대답이 아니다.) – ps0604
제발, 업데이트를보고, 나는 당신이 그것을 다르게 이해하는지 확신하지 못한다. –