Play 2 中的 Crontab 样式调度。4.x?
Crontab style scheduling in Play 2.4.x?
从技术上讲,我可以在机器上安装 cron 和 curl url,但我正在努力避免这种情况。有什么方法可以做到这一点?
我想避免使用 cron 的原因是这样我就可以轻松地更改计划或完全停止它,而无需通过 ssh 进入机器来执行此操作。
您可以使用 Akka 调度程序。
val scheduler = Akka.system(app).scheduler
scheduler.schedule(0 seconds, 1 hour) {
// run this block every hour
}
第一个参数是延迟,所以如果你想延迟到特定时间,你可以通过一些简单的日期算法轻松计算出目标时间。
看看:https://github.com/enragedginger/akka-quartz-scheduler。
有关有效的 CronExpressions 和示例,请参阅 http://quartz-scheduler.org/api/2.1.7/org/quartz/CronExpression.html。
取自文档的示例:
名为“每 30 秒”的示例计划,每 30 秒触发一次:
akka {
quartz {
schedules {
Every30Seconds {
description = "A cron job that fires off every 30 seconds"
expression = "*/30 * * ? * *"
calendar = "OnlyBusinessHours"
}
}
}
}
您可以将其整合到您的 Play 中!应用程序(可能在您的全局应用程序中)
查看 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
从技术上讲,我可以在机器上安装 cron 和 curl url,但我正在努力避免这种情况。有什么方法可以做到这一点?
我想避免使用 cron 的原因是这样我就可以轻松地更改计划或完全停止它,而无需通过 ssh 进入机器来执行此操作。
您可以使用 Akka 调度程序。
val scheduler = Akka.system(app).scheduler
scheduler.schedule(0 seconds, 1 hour) {
// run this block every hour
}
第一个参数是延迟,所以如果你想延迟到特定时间,你可以通过一些简单的日期算法轻松计算出目标时间。
看看:https://github.com/enragedginger/akka-quartz-scheduler。 有关有效的 CronExpressions 和示例,请参阅 http://quartz-scheduler.org/api/2.1.7/org/quartz/CronExpression.html。
取自文档的示例:
名为“每 30 秒”的示例计划,每 30 秒触发一次:
akka {
quartz {
schedules {
Every30Seconds {
description = "A cron job that fires off every 30 seconds"
expression = "*/30 * * ? * *"
calendar = "OnlyBusinessHours"
}
}
}
}
您可以将其整合到您的 Play 中!应用程序(可能在您的全局应用程序中)
查看 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