0

我有一个 Azure Durable Function (v3),计划在周六晚上 20:30(晚上 8:30)运行。星期天早上我看到它没有运行,所以我安排它在星期一的 20:30 运行。我通过使用新的 TimerTrigger 设置部署新的 zip 包来做到这一点。该应用程序在周一运行,但它并没有完成我希望它完成的所有工作。周三 13:00 左右,我添加了一些日志记录并安排应用程序在每天 20:30 运行:

public async Task Start([TimerTrigger("0 30 20 * * *")] TimerInfo timerInfo,
            [DurableClient] IDurableOrchestrationClient starter,
            ILogger log)
        {
// ...
        }

我今天(星期四早上)检查了该功能并没有触发。我在 Azure 存储上打开了日志,我只看到了周一的运行情况:

2021-04-19T20:30:00.058 [Information] Executing 'KreptdIntegration_Start' (Reason='Timer fired at 2021-04-19T20:30:00.0215809+00:00', Id=8c40e15b-a740-4956-a6e6-b90b8fe95f3a)
2021-04-19T20:30:00.338 [Information] Started orchestration with ID = 'kreptdintegrationsingleinstance'.
2021-04-19T20:30:00.364 [Information] Executed 'KreptdIntegration_Start' (Succeeded, Id=8c40e15b-a740-4956-a6e6-b90b8fe95f3a, Duration=331ms)

在 Azure 门户中函数的监控部分,我还只能看到有关周一运行的信息: 在此处输入图像描述

为什么函数没有触发?是否有可能我安排的功能太晚了?(我安排它在 13:00 左右运行,在当天 20:30 运行。如果它是用 C# 编写并部署为包的函数,是否可以从 Azure 门户手动触发该函数?

4

1 回答 1

0

为确保新触发器正常工作,它需要同步。您可以通过以下三种方式之一同步触发器:

  • 在 Azure 门户中重新启动函数应用
  • 发送 HTTP POST 请求以https://{functionappname}.azurewebsites.net/admin/host/synctriggers?code=<API_KEY>使用主密钥。
  • 向 发送 HTTP POST 请求https://management.azure.com/subscriptions/<SUBSCRIPTION_ID>/resourceGroups/<RESOURCE_GROUP_NAME>/providers/Microsoft.Web/sites/<FUNCTION_APP_NAME>/syncfunctiontriggers?api-version=2016-08-01

将占位符替换为您的订阅 ID、资源组名称和函数应用的名称。

来源:https ://docs.microsoft.com/en-us/azure/azure-functions/functions-deployment-technologies#trigger-syncing

于 2021-04-27T11:50:00.330 回答