如果 Azure 函式執行 10 分鐘,但周期為 5 分鐘,那么觸發器是否仍會在 5 分鐘標記處觸發?
uj5u.com熱心網友回復:
回答這個問題的最簡單方法是自己測驗。
我創建了一個小函式,它只是在執行后等待 90 秒。
計時器設定為每分鐘運行一次,因此,測驗是查看該函式是否仍每分鐘執行一次,或者是否延遲 30 秒。

日志顯示您的問題的答案是……不
您可以看到它已將另一次執行排入佇列,因為一旦完成,它就會重新開始。
您還將看到每次呼叫的開始時間都會延遲 30 秒,因為函式運行需要額外的 30 秒。
這是功能...
using System;
public static async Task Run(TimerInfo myTimer, ILogger log)
{
log.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
await Task.Delay(90000);
}
監控日志

呼叫

uj5u.com熱心網友回復:
我嘗試的解決方法之一是:
在host.json中,給定函式超時顯式地在本地測驗:
{
"version": "2.0",
"logging": {
"applicationInsights": {
"samplingSettings": {
"isEnabled": true,
"excludedTypes": "Request"
}
}
},
"functionTimeout": "00:05:00"
}
在 Azure Function 中,每 10 分鐘安排一次 Timer 觸發器:
public void Run([TimerTrigger("0 */10 * * * *")]TimerInfo myTimer, ILogger log)
{
log.LogInformation($"C# Timer trigger function1 executed at: {DateTime.Now}");

即使在 Azure Cloud(消費模式)中運行,也沒有發生超時,因為計時器仍然每 10 分鐘運行一次:

正如MS Doc和Azure 博客文章中提到的,超時來自 Azure Function 請求(這意味著您的業務邏輯應該在函式超時發生之前完成,因此您可以在每個計劃中使用 Timer Trigger 運行相同的邏輯)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/441696.html
