Azure 计时器触发器:每小时的 Cron 表达式

use*_*050 3 cron azure azure-functions timer-trigger

每小时的 cron 表达式是什么?我试过这个 '0 0 * ?* *' 但它抛出了一个错误我有一个 Azure 函数计时器触发器

下面的这个表达式每分钟运行一次。

public static void Run([TimerTrigger("0 * * * * *")]TimerInfo myTimer, TraceWriter log)
Run Code Online (Sandbox Code Playgroud)

这是我在尝试“0 0 * ? * * *”和“0 0 * ? * *”时收到的错误

[11/22/2018 12:45:29 AM] 发生 ScriptHost 错误 [11/22/2018 12:45:29 AM] Microsoft.Azure.WebJobs.Host:错误索引方法“Currencies.Run”。Microsoft.Azure.WebJobs.Extensions:计划表达式 '0 0 * ? * * *' 未被识别为有效的 cron 表达式或时间跨度字符串。[11/22/2018 12:45:29 AM] 错误索引方法“Currencies.Run” [11/22/2018 12:45:29 AM] Microsoft.Azure.WebJobs.Host:错误索引方法“Currencies.Run” . Microsoft.Azure.WebJobs.Extensions:计划表达式 '0 0 * ? * * *' 未被识别为有效的 cron 表达式或时间跨度字符串。

Mit*_*eat 7

编辑:尝试使用"0 0 * * * *"文档强调使用六个字段。

Azure Functions 使用 NCronTab 库来解释 CRON 表达式。CRON 表达式包括六个字段:

{second} {minute} {hour} {day} {month} {day-of-week}


Azure 应该NCrontab根据 doco使用该库,但测试表明并非如此! 所以"0 * * * *"每小时使用一次。

这是要验证的LINQPad脚本:

var s = CrontabSchedule.Parse("0 * * * *");
var start = new DateTime(2000, 1, 1);
var end = start.AddYears(1);
var occurrences = s.GetNextOccurrences(start, end);
occurrences.Dump();
Run Code Online (Sandbox Code Playgroud)

[这需要拉入NCrontab nuget包]

参考:https : //docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-timer

“Azure 函数使用 NCronTab 库来解释 CRON 表达式”