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

时间:2018-11-22 00:42:01

标签: azure cron azure-functions timer-trigger

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

下面的此表达式每分钟运行一分钟。

.modalBack {
	z-index: 10;
	position: absolute;
	height: 100vh;
	width: 100%;
	background-color: rgba(0,0,0,0.7);
	padding-top: 10%;
	opacity: 0;
	pointer-events: none;
	transition: opacity 0.5s;
}


.modalBack:target{
	opacity: 1;
	pointer-events: auto;
	position: fixed;
}

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

  

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

1 个答案:

答案 0 :(得分:3)

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

  

Azure函数使用NCronTab库来解释CRON表达式。 CRON表达式包含六个字段:

     

{秒} {分钟} {小时} {日} {月} {星期几}


根据doco的说法,Azure应该使用NCrontab库,但测试表明并非如此! 因此每小时每小时使用"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();

[这需要插入NCrontab nuget包]

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

  

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