Mam grę! aplikacja z niektórymi zadaniami, które muszę wykonywać okresowo. Mogę zaplanować zadania za pomocą Akka, ale nie jestem pewien, jak uruchomić sam program planujący. Co robię teraz jest o przedmiot Harmonogram i rozpoczynając ją od Global.scala
, jak toPocząwszy od aktorów Akka w grze
// 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()
}
}
}
a następnie
// app/Global.scala
import play.api._
import jobs.Scheduler
object Global extends GlobalSettings {
override def onStart(app: Application) {
Scheduler.start()
}
}
Problem polega na tym, że w tym zadanie jest uruchamiane nawet w trybie rozwoju i podczas testów staje się to bardzo irytujące.
Czy istnieje sposób, aby zaplanować pracę z Akka tylko w trybie produkcji?
Istnieją metody ',' isDev' isProd' i 'isTest' na [Play] (http: //www.playframework. org/documentation/api/2.1-RC1/scala/index.html # play.api.Play $) Obiekt, aby dowiedzieć się, który tryb jest aktualnie uruchomiony. – 4e6
Dziękuję. O ile wspomniane metody zależą od posiadania niejawnej 'aplikacji' w zakresie - co nie jest prawdą, ponieważ argument" onStart "nie jest niejawny - po tym łączu faktycznie stwierdziłem, że można po prostu sprawdzić app.mode, który robi to samo. Jeśli chcesz umieścić to w odpowiedzi, chętnie go zaakceptuję. – Andrea