2015-09-14 12 views
5

Technicznie mogę zainstalować cron na komputerze i zwinąć adres URL, ale staram się tego uniknąć. Jakikolwiek sposób to osiągnąć?Planowanie stylu Crontab w Play 2.4.x?

Powód, dla którego chcę uniknąć crona, mogę łatwo zmienić harmonogram lub całkowicie go wyłączyć, nawet nie wchodząc do maszyny, aby to zrobić.

Odpowiedz

5

Spójrz na: https://github.com/enragedginger/akka-quartz-scheduler. Odwołaj się do http://quartz-scheduler.org/api/2.1.7/org/quartz/CronExpression.html, aby zobaczyć poprawne przykłady CronExpressions i przykłady.

Przykład wzięty z docs:

harmonogram przykład o nazwie Co-30-sekund, co, trafnie, pożary-off co 30 sekund:

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

można zintegrować to do swojej gry! aplikacja (prawdopodobnie w globalnej aplikacji)

+0

tak też na to patrzyłem. myślałem, że było coś, co zostało wbudowane do gry, z którymi mógłbym pracować, pamiętam, że była ta klasa "Job", która została usunięta ... – iCodeLikeImDrunk

+0

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

3

Możesz użyć programu planującego Akka.

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

Pierwszy parametr jest opóźnienie, więc jeśli chciał opóźnić do określonego czasu można łatwo obliczyć czas docelowy z jakimś prostym data arytmetyki.

+0

scheduler wiem, im bardziej patrzy na coś, co pozwala mi uruchomić coś jak „40 06 * * 1-5 " – iCodeLikeImDrunk

+0

Z https://github.com/enragedginger/akka-quartz-scheduler:" Domyślny harmonogram programu Akka jest również wykonywany wokół HashedWheelTimer - potencjalnej straty precyzji dla zleceń, ponieważ nie zapewnia ona terminowość wykonania. " – nafg

2

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

Niektóre przykładowy kod z 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

, który wygląda tak łatwy w użyciu! oznaczony gwiazdką! – iCodeLikeImDrunk

Powiązane problemy