6

我有戏!具有一些我需要定期运行的任务的应用程序。我可以使用 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 安排作业?

4

1 回答 1

7

MethodsisProd和on object 可能会有所帮助isDev。即使您没有隐式范围,您也可以显式传递它isTestPlayApplication

override def onStart(app: Application) {
  if (isProd(app)) Scheduler.start()
}
于 2012-12-06T09:49:59.637 回答