【问题标题】:Crontab style scheduling in Play 2.4.x?Play 2.4.x 中的 Crontab 样式调度?
【发布时间】:2015-12-10 23:17:16
【问题描述】:

从技术上讲,我可以在机器上安装 cron 并卷曲 url,但我试图避免这种情况。有什么方法可以做到这一点?

我想避免使用 cron 的原因是,我可以轻松更改计划或完全停止它,而无需通过 ssh 进入机器来这样做。

【问题讨论】:

    标签: scala playframework cron scheduled-tasks


    【解决方案1】:

    您可以使用 Akka 调度程序。

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

    第一个参数是延迟,因此如果您想延迟到特定时间,您可以通过一些简单的日期算法轻松计算目标时间。

    【讨论】:

    • 调度程序我知道,我更多的是在寻找可以让我运行类似“40 06 * * 1-5”的东西
    • 来自github.com/enragedginger/akka-quartz-scheduler:“Akka 的默认调度程序也是围绕 HashedWheelTimer 执行的——这可能会导致作业的精度损失,因为它不能保证执行的及时性。”
    【解决方案2】:

    看看:https://github.com/enragedginger/akka-quartz-scheduler。 有关有效的 CronExpressions 和示例,请参阅 http://quartz-scheduler.org/api/2.1.7/org/quartz/CronExpression.html

    来自文档的示例:

    一个名为 Every-30-Seconds 的示例计划,它恰当地每 30 秒触发一次:

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

    您可以将其集成到您的 Play 中!应用程序(可能在您的全局应用程序中)

    【讨论】:

    • 是的,我也在看。我认为有一些内置的东西可以用来玩,我记得有一个“工作”类被删除了......
    【解决方案3】:

    查看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
    

    【讨论】:

    • 看起来很容易使用!加星标!
    猜你喜欢
    • 1970-01-01
    • 2015-11-05
    • 1970-01-01
    • 1970-01-01
    • 2015-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多