2015-09-14 2 views
5

Технически я могу установить cron на машину и скрутить URL-адрес, но я стараюсь избегать этого. Любой способ это сделать?Планирование стиля Crontab в Play 2.4.x?

Причина Я хочу, чтобы избежать cron, поэтому я могу легко изменить расписание или полностью остановить его, не используя ssh'ing в машину, чтобы сделать это.

ответ

5

Посмотрите на: https://github.com/enragedginger/akka-quartz-scheduler. Обратитесь к http://quartz-scheduler.org/api/2.1.7/org/quartz/CronExpression.html за действительные CronExpressions и примеры.

Пример взят из документации:

Пример графика называется Каждый-30-секунд, что, точно, пожары прочь каждые 30 секунд:

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

Вы можете интегрировать это в вашу игру! приложение (возможно, в вашем глобальном применении)

+0

Да, я тоже смотрел на это. Я думал, что есть что-то, что было встроено в игру, с которой я мог бы работать, я помню, что был этот класс «Работа», который был удален ... – iCodeLikeImDrunk

+0

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

3

Вы можете использовать планировщик Akka.

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

Первый параметр является задержкой, поэтому, если вы хотите отложить на определенное время можно легко рассчитать целевое время с некоторой простой арифметикой дат.

+0

планировщик я знаю, им еще ищет что-то, что позволяет мне запустить что-то вроде «40 06 * * 1-5 " – iCodeLikeImDrunk

+0

От https://github.com/ru/enragedginger/akka-quartz-scheduler:« Планировщик по умолчанию для Akka также выполняется вокруг HashedWheelTimer - потенциальная потеря точности для рабочих мест, поскольку она не обеспечивает надежных гарантий по своевременность исполнения ». – nafg

2

Заканчивать https://github.com/philcali/cronish

Некоторые примеры кода из 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

, который выглядит так просто в использовании! играл главную роль! – iCodeLikeImDrunk

Смежные вопросы