Play

2012-12-06 18 views
6

में अक्का अभिनेता शुरू करना मेरे पास एक प्ले है! कुछ कार्यों के साथ आवेदन जो मुझे समय-समय पर चलाने की ज़रूरत है। मैं अक्का का उपयोग करके कार्यों को शेड्यूल कर सकता हूं, लेकिन मुझे यकीन नहीं है कि शेड्यूलर को कैसे शुरू किया जाए। क्या मैं सही कर रहा हूँ अब एक समयबद्धक वस्तु हो रही है और Global.scala से शुरू होने वाले इस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() 
    } 
    } 
} 

और फिर

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

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

समस्या की तरह है कि इस में, काम भी विकास मोड में चलाता है और है परीक्षण के दौरान, यह जल्द ही बहुत परेशान हो जाता है।

क्या केवल उत्पादन मोड में अक्का के साथ नौकरियां निर्धारित करने का कोई तरीका है?

+1

तरीकों रहे हैं 'isProd',' isDev' और 'isTest'। संगठन/दस्तावेज़ीकरण/एपीआई/2.1-आरसी 1/स्कैला/index.html # play.api.play $) ऑब्जेक्ट जो आप वर्तमान में चल रहे मोड को ढूंढने के लिए करते हैं। – 4e6

+0

धन्यवाद। जबकि आप जिन तरीकों का उल्लेख करते हैं, वे दायरे में एक अंतर्निहित 'ऐप' होने पर निर्भर करते हैं - जो मामला नहीं है, क्योंकि 'ऑनस्टार्ट' के लिए तर्क निहित नहीं है - आपके लिंक के बाद, मुझे वास्तव में पता चला कि कोई भी ऐप.मोड को देख सकता है, जो कि वही करता है यदि आप इसे उत्तर में रखना चाहते हैं, तो मुझे इसे स्वीकार करने में खुशी होगी। – Andrea

उत्तर

7

तरीके isProd, isDev और isTestPlay वस्तु के बारे में सहायक हो सकता है। //www.playframework: भले ही आप दायरे में निहित Application नहीं है, आप उस पर [प्ले] (http पारित कर सकते हैं स्पष्ट रूप से

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