2012-12-06 23 views
6

Bir Oyun var! Bazı görevleri ile uygulama periyodik olarak çalıştırmak gerekir. Görevleri Akka kullanarak programlayabilirim, ancak programlayıcının kendisinin nasıl başlayacağından emin değilim. Şu anda hemen yapıyorum buAkka oyuncuları oyuna dahil et

// 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() 
    } 
    } 
} 

ve sonra

// app/Global.scala 
import play.api._ 
import jobs.Scheduler 

object Global extends GlobalSettings { 
    override def onStart(app: Application) { 
    Scheduler.start() 
    } 
} 

sorunu gibi, bir Zamanlayıcı nesnesi olan ve Global.scala onu başlıyor bunda, görev bile geliştirme modunda çalışır ve olmasıdır testler sırasında, bu çok yakında sinir bozucu olur.

Sadece üretim modunda Akka ile iş planlamanın bir yolu var mı?

+1

yöntem vardır isProd',' isDev' ve 'isTest' iletebiliriz. Çalışmakta olduğunuz modu bulmak için org/documentation/api/2.1-RC1/scala/index.html # play.api.Play $) nesnesi. – 4e6

+0

Teşekkürler. Bahsettiğiniz yöntemler kapsamda bir 'implicit' uygulamasına sahip olmakla birlikte - ki bu, 'onStart' argümanı örtük olmadığından - ki bu sizin bağlantınızı izliyorsa, aslında app.mode'u kontrol edebiliyordum. aynısını yapar. Bunu bir cevaba koymak istiyorsanız, bunu kabul etmekten memnun olurum. – Andrea

cevap

7

Yöntemleri isProd, isDev ve Play nesne üzerinde isTest faydalı olabilir. //www.playframework: Eğer kapsamında Application örtülü yoksa bile, [Oynat] (http `açıkça

override def onStart(app: Application) { 
    if (isProd(app)) Scheduler.start() 
} 
İlgili konular