【问题标题】:Cron Expression being called multiple timesCron 表达式被多次调用
【发布时间】:2018-11-17 03:56:44
【问题描述】:

我正在尝试每天在特定时间运行一项工作,以进行测试,该测试本应在每天 11:20:00 进行,而实际上应该在每天 23:59:59 进行。无论出于何种原因,这项工作每 5 分钟就会被触发一次,我不知道为什么。看这里的代码:

 static triggers = {
    cron name: 'reportTrigger', cronExpression: "0 20 11 ? * * *"
}

def execute(){
    //execute code that isn't relevant here
}

我使用的是 grails 石英插件的 2.0.9 版,我尝试过更新的版本,但这会导致其他作业(实际上必须每 5 分钟运行一次)不再工作。

【问题讨论】:

  • cronExpression 很好。您是否有可能在不同的工作之间使用相同的cron name,而一个正在覆盖另一个?
  • 我不这么认为,我在这个应用程序中只使用了 2 个 cron 作业。一个是reportTrigger,另一个是licenseTrigger

标签: grails cron quartz-scheduler grails-plugin


【解决方案1】:

quartz cron 语法与你从 *nix 知道的有点不同。它有 6 个参数,第一个是秒而不是分钟

由于这是 grails 2 插件,因此很难再找到文档,但通常最后一个参数应该是 ?,如页面底部 https://github.com/9ci/grails-quartz2 中所述。所以你的表达是:0 20 11 * * ? for 11:20:00

另外,如果您想为 PRODUCTION 和 testing 设置不同的条目,您可以像这样添加它:

static triggers = {
        if (Environment.current == Environment.PRODUCTION) {
            cron cronExpression: "0 0 * * * ?"
        } else {
            cron cronExpression: "0 */1 * * * ?"
        }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-11
    • 2022-01-01
    • 2017-10-10
    • 1970-01-01
    • 2019-11-18
    • 1970-01-01
    相关资源
    最近更新 更多