Ich habe ein Spiel! Anwendung mit einigen Aufgaben, die ich regelmäßig ausführen muss. Ich kann die Aufgaben mit Akka planen, aber ich bin mir nicht sicher, wie ich den Scheduler selbst starten soll. Was ich jetzt mache ein Scheduler Objekt mit und starten es von Global.scala
, wie dieserStart Akka Schauspieler in Play
// 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()
}
}
}
und dann
// app/Global.scala
import play.api._
import jobs.Scheduler
object Global extends GlobalSettings {
override def onStart(app: Application) {
Scheduler.start()
}
}
Das Problem ist, darin, daß die Aufgabe, auch im Entwicklungsmodus läuft und Das wird bei Tests schnell sehr nervig.
Gibt es eine Möglichkeit, Jobs mit Akka nur im Produktionsmodus zu planen?
Es gibt Methoden 'isProd',' isDev' und 'isTest' auf [Play] (http: //www.playframework. org/documentation/api/2.1-RC1/scala/index.html # play.api.Play $), um herauszufinden, welcher Modus gerade läuft. – 4e6
Danke. Während die Methoden, die Sie erwähnen, davon abhängig sind, eine implizite "app" im Umfang zu haben - was nicht der Fall ist, da das Argument zu "onStart" nicht implizit ist - nach Ihrem Link, fand ich tatsächlich, dass man einfach app.mode überprüfen kann, was macht das selbe. Wenn Sie das in eine Antwort aufnehmen wollen, werde ich es gerne annehmen. – Andrea