【问题标题】:Continuous WebJob with timer trigger带有计时器触发器的连续 WebJob
【发布时间】:2017-08-18 14:10:05
【问题描述】:

我在连续网络作业中编写了以下功能:

public static void fun1([TimerTrigger("24:00:00", RunOnStartup = true, UseMonitor = true)] TimerInfo timerInfo, TextWriter log)
{//Code}

public static void fun2([TimerTrigger("00:01:00", RunOnStartup = true, UseMonitor = true)] TimerInfo timerInfo, TextWriter log)
{//code}

其中,fun1 不再被调用(只有一次,在开始网络作业后) 并且 fun2 在每个进程完成后被调用 1 分钟触发器。

谁能解释一下为什么? 我做错什么了吗?

【问题讨论】:

    标签: azure azure-webjobs


    【解决方案1】:

    你应该看看TimerTriggerAttribute的文档:

    • 您指定的第一个参数是调度表达式: 这可以是 6 字段 crontab 表达式或 System.TimeSpan。

    Cron 表达式可以这样表示:

    *    *    *    *    *    *  command to be executed
    ┬    ┬    ┬    ┬    ┬    ┬
    │    │    │    │    │    │
    │    │    │    │    │    │
    │    │    │    │    │    └───── day of week (0 - 7) (0 or 7 are Sunday, or    use names)
    │    │    │    │    └────────── month (1 - 12)
    │    │    │    └─────────────── day of month (1 - 31)
    │    |    └──────────────────── hour (0 - 23)
    │    └───────────────────────── min (0 - 59)
    └────────────────────────────── second(0 - 59)
    

    在您的情况下,表达式是表示 TimeSpan 的字符串:

    • "24:00:00":此作业每 24 小时运行一次,RunOnStartup:这意味着该作业将在 webjob 启动或重新启动时运行,即使最后一次运行发生在过去 24 小时内。

    • "00:01:00":该作业每分钟运行一次,RunOnStartup:这意味着该作业将在 webjob 启动或重新启动时运行,即使最后一次运行发生在最后一分钟。

      李>

    编辑

    从这个答案:

    这是由于 TimeSpan.Parse 的工作方式。如果你奇怪地通过它“24:00:00”,它会给你一个持续时间为 24 天的 TimeSpan。不确定这是他们的预期行为还是他们这边的错误,但我们只是将表达式传递给他们并继承他们的行为。 无论如何,为了您的目的,您可以使用“1.00:00”(指定 1 天)来获得 24 小时。

    【讨论】:

    • 为您在 ASCII 模式中投入的所有爱加一个 :)
    • 我尝试使用“24:00:00”作为计划表达式,但 azure 将接下来的 5 次事件发布为相隔 24 天。我最终使用了“0 0 10 1/1 * *”
    • @sebastian.roibu。刚刚试过,你是对的。我将在 git repo 上打开一个问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多