这是我的功能。杰森
{ "generatedBy": "Microsoft.NET.Sdk.Functions-1.0.28", "configurationSource": "attributes", "bindings": [
{
"type": "timerTrigger",
"schedule": "*/5 * * * * *",
"useMonitor": true,
"runOnStartup": false,
"name": "myTimer"
} ], "disabled": false, "scriptFile": "../bin/PullRequest.dll", "entryPoint": "PullRequest.PullRequest.Run" }
这是我的实际功能:
[FunctionName("PullRequest")]
public static void Run([TimerTrigger("*/5 * * * * *")]TimerInfo myTimer, ILogger log)
{
if (myTimer.IsPastDue)
{
log.LogInformation("Timer is running late!");
}
log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
}
当我尝试在Azure门户上运行此功能时,它只会运行一次并停止。
答案 0 :(得分:1)
类似于DavidG said:您显示给我们的日志显示函数PullRequest
至少运行了 3次。
executing
日志行不可见,原因尚不清楚您的CRON表达式*/5 * * * * *
大致翻译为“每次将秒数除以5都会运行一次”。这与您提供的日志不符。您确定自己使用的是CRON表达式吗?
Azure函数使用NCronTab库来解释CRON表达式。 CRON表达式包含六个字段:
{second} {minute} {hour} {day} {month} {day-of-week}
取自Timer trigger for Azure Functions - CRON expressions。
编辑:
在计时器触发器上运行的功能会在指定的计时器间隔自动触发。要使功能真正运行,您(当然)需要运行一些东西来执行该触发器。否则:如何触发它们?
在Azure中,函数运行时负责在正确的时间触发函数。在本地,在调试应用程序时自动启动的func.exe
工具将为您执行此操作。但是,如果没有运行,则什么都不会发生。
Azure函数核心工具可让您从命令提示符或终端在本地计算机上开发和测试函数。您的本地功能可以连接到实时Azure服务,并且您可以使用完整的功能运行时在本地计算机上调试功能。
和
要运行功能项目,请运行功能主机。主机为项目中的所有功能启用触发器。
来自Work with Azure Functions Core Tools。
简而言之:“主机启用触发器。它需要运行以具有触发任何功能的事物”。
答案 1 :(得分:1)