2015-09-14 11 views
5

Tecnicamente posso installare cron sulla macchina e arricciare l'url, ma sto cercando di evitarlo. Qualche modo per realizzare questo?Pianificazione stile Crontab in Play 2.4.x?

Motivo che voglio evitare cron è così posso facilmente modificare il programma o fermarlo completamente senza anche ssh'ing nella macchina per farlo.

risposta

5

Dai un'occhiata a: https://github.com/enragedginger/akka-quartz-scheduler. Fare riferimento a http://quartz-scheduler.org/api/2.1.7/org/quartz/CronExpression.html per cronExpressions ed esempi validi.

un esempio tratto dalla documentazione:

Un programma di esempio chiamato ogni-30-secondi, che, giustamente, incendi-off ogni 30 secondi:

akka { 
    quartz { 
    schedules { 
     Every30Seconds { 
     description = "A cron job that fires off every 30 seconds" 
     expression = "*/30 * * ? * *" 
     calendar = "OnlyBusinessHours" 
     } 
    } 
    } 
} 

È possibile integrare questo nella vostra Play! applicazione (probabilmente nell'applicazione globale)

+0

sì, stavo guardando anche quello. Pensavo che ci fosse qualcosa che era stato costruito per giocare con cui avrei potuto lavorare, ricordo che c'era questa classe "Job" che è stata rimossa ... – iCodeLikeImDrunk

+0

http://stackoverflow.com/questions/9339714/where-is-the -job-support-in-play-2-0 – nafg

3

È possibile utilizzare lo schedulatore Akka.

val scheduler = Akka.system(app).scheduler 
scheduler.schedule(0 seconds, 1 hour) { 
    // run this block every hour 
} 

Il primo parametro è un ritardo, quindi se si voleva ritardare a un tempo specifico si potrebbe facilmente calcolare il tempo bersaglio con una certa data di semplice aritmetica.

+0

scheduler so, im più alla ricerca di qualcosa che mi permetta di eseguire qualcosa di simile "40 06 * * 1-5 " – iCodeLikeImDrunk

+0

Da https://github.com/enragedginger/akka-quartz-scheduler:" Anche lo schedulatore di default di Akka viene eseguito attorno a un HashedWheelTimer - una potenziale perdita di precisione per i lavori, in quanto non fornisce forti garanzie su la tempestività dell'esecuzione. " – nafg

2

Partenza https://github.com/philcali/cronish

qualche esempio di codice da README.md:

val payroll = task { 
    println("You have just been paid... Finally!") 
} 

// Yes... that's how you run it 
payroll executes "every last Friday in every month" 

val greetings = job (println("Hello there")) describedAs "General Greetings" 

// give a delayed start 
val delayed = greetings runs "every day at 7:30" in 5.seconds 

// give an exact time to start 
val exact = greetings runs "every day at noon" starting now + 1.week 

// resets a job to its definition 
val reseted = exact.reset() 

reseted starting now + 1.day 
+0

che sembra così facile da usare! ha recitato! – iCodeLikeImDrunk

Problemi correlati