gpt4 book ai didi

azure - 带计时器触发器的连续 WebJob

转载 作者:行者123 更新时间:2023-12-04 01:23:41 27 4
gpt4 key购买 nike

我在连续网络作业中编写了以下函数:

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 分钟。

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

最佳答案

您应该查看 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 启动或重新启动时运行如果最后一次运行发生在最后一分钟。

编辑

来自这个答案:

This is due to the way TimeSpan.Parse works. If you pass it "24:00:00" strangely enough it will give you back a TimeSpan of duration 24 days. Not sure if this is their intended behavior or a bug on their side, but we simply pass the expression down to them and inherit their behavior. Anyhow, for your purposes, to get 24 hours you can use "1.00:00" (specifying 1 day).

关于azure - 带计时器触发器的连续 WebJob,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36218203/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com