我正在使用Play 2.1和Scala连续运行多个测试。
我正在做Future.traverse(tests)(test => Future(runTest(test))
。
我想限制并行运行的测试数量,所以我想限制默认调度程序中的线程数。
我试图把
play {
akka {
event-handlers = ["akka.event.slf4j.Slf4jEventHandler"]
loglevel = WARNING
actor {
default-dispatcher = {
fork-join-executor {
parallelism-factor = 1.0
parallelism-max = 2
}
}
}
}
}
<{1>}中的但它似乎没有任何影响(当我运行程序时,每个核心仍有一个线程)。其他播放设置正确读取application.conf
。
我试图摆脱围绕它的游戏{},但它什么都没改变。
我尝试了不同的执行上下文导入但没有成功:
application.conf
当我运行应用程序时,我收到此消息,因此它似乎是使用的默认调度程序:
//import scala.concurrent.ExecutionContext.Implicits._
import play.api.libs.concurrent.Execution.Implicits._
有人知道我为什么无法配置默认调度程序吗?
谢谢!
主题列表:
[info] play - Starting application default Akka system.
8 main
Reference Handler
Finalizer
Signal Dispatcher
FSEvent thread
Attach Listener
play-scheduler-1
Timer-0
com.google.common.base.internal.Finalizer
BoneCP-keep-alive-scheduler
BoneCP-max-alive-scheduler
BoneCP-pool-alive-scheduler
application-akka.actor.default-dispatcher-2
application-scheduler-1
ForkJoinPool-3-worker-1
default-scheduler-1
default-scheduler-1
default-scheduler-1
default-akka.actor.default-dispatcher-3
default-akka.actor.default-dispatcher-5
default-akka.actor.default-dispatcher-3
default-akka.actor.default-dispatcher-2
default-akka.actor.default-dispatcher-5
default-pinned-dispatcher-4
play-akka.actor.default-dispatcher-2
play-akka.actor.default-dispatcher-4
Timer-1
Timer-3
Timer-4
Hashed wheel timer #1
Hashed wheel timer #2
Hashed wheel timer #3
AsyncHttpClient-Reaper
AsyncHttpClient-Reaper
AsyncHttpClient-Reaper
default-pinned-dispatcher-4
default-pinned-dispatcher-4
New I/O boss #35
New I/O boss #44
(1到8)
8 play-internal-execution-context-
(1到8)
62 iteratee-execution-context-
(1到62)
答案 0 :(得分:1)
您忘记的设置是parallelism-min
,默认为8.但在您更改之前请考虑不使用默认调度程序:将其限制为两个线程可能会破坏系统。我建议configuring a specific dispatcher用于你的未来。