我玩了!我需要定期运行某些任务的应用程序。我可以使用Akka安排任务,但我不知道如何启动调度程序本身。我现在正在做的是拥有一个Scheduler对象并从Global.scala
开始,就像这样
// app/jobs/Scheduler.scala
package jobs
import akka.util.duration._
import play.api.libs.concurrent.Akka
import play.api.Play.current
object Scheduler {
def start() {
Akka.system.scheduler.schedule(0 seconds, 1 minutes) {
SomeTask.start()
}
}
}
然后
// app/Global.scala
import play.api._
import jobs.Scheduler
object Global extends GlobalSettings {
override def onStart(app: Application) {
Scheduler.start()
}
}
问题在于,即使在开发模式和测试期间,任务也会运行,这很快就会非常烦人。
有没有办法只在生产模式下使用Akka安排作业?
答案 0 :(得分:7)
Play
对象上的方法isProd
,isDev
和isTest
可能会有所帮助。即使您在范围内没有隐式Application
,也可以显式传递
override def onStart(app: Application) {
if (isProd(app)) Scheduler.start()
}