簡體   English   中英

Azure 帶定時器觸發器的函數:UnscheduledInvocationReason

[英]Azure Functions with timer trigger: UnscheduledInvocationReason

在我的 Azure 函數中,我有 26 個函數,只有 7 個帶有定時器觸發器(參見我以前的帖子,我也看到了另一個帖子,但它很舊)。 微軟對此沒有任何建議。 一些函數有一個定時器觸發器,並且在過程結束時每個 function 發送一個 email。 我有 2 種類型的計時器觸發器:

  • 每 20 分鍾運行一次 function
  • 在夜間的特定時間運行一次 function
  • 每 20 分鍾 function 會按照我的預期進行

我面臨的問題是 function 他們必須在特定時間開始。 基本上,直到我打開門戶並在 Azure Function 上做某事(例如打開其中一個的監視器),它們才會開始。

從代碼的角度來看,所有帶有定時器觸發器的函數都是這樣定義的:

[FunctionName("invoiceMonthlyGeneratorTimer")]
public void Run([TimerTrigger("%Timers:GenerateMonthlyInvoices%")] TimerInfo myTimer)
{
    // ..
}

[FunctionName("invoiceDunningTimer")]
public async Task Run([TimerTrigger("%Timers:DunningTimer%")] TimerInfo timer)
{
    // ...
}

計時器的配置在設置文件中,例如:

"Timers": {
    "DunningTimer": "0 0 4 * * *",
    "GenerateMonthlyInvoices": "0 0 4 * * *"
}

很驚訝我早上沒有收到任何 email,我檢查了 Application Insights 並沒有找到任何與計時器功能相關的日志。

然后,我在門戶中打開了 Azure 函數,單擊了一個 function,神奇的是,我收到了 email。 在日志中,我發現了如下相同的日志:

觸發器詳細信息:UnscheduledInvocationReason:IsPastDue,OriginalSchedule:2020-07-24T05:00:00.0000000+00:00

在此處輸入圖像描述

正如一個小伙子在我上一篇文章的評論中所建議的那樣,定時器觸發函數會發生沖突並且不會啟動。 這似乎很煩人。 我還在Github上打開了一個問題。

Azure Functions 中是否有任何關於定時器觸發功能的指南? 有沒有人和我遇到過同樣的問題?

對於這個問題,我認為它可能是由於您之前的帖子提到的一個 function 應用程序中的多個功能造成的。 我在 http 觸發器 function 和計時器觸發器 function 中遇到了類似的問題 ZC1C425268E687A94F11 代碼很簡單(我確認代碼沒有錯誤),但是定時器觸發function不能按時觸發。

是我遇到的類似問題的帖子。 解決方法是在不同的 function 應用程序中創建函數。 對於您的問題,我認為您可以像我上面提到的那樣在不同的 function 應用程序中創建功能,或者您可以按照此頁面上的步驟在 azure 門戶上提出支持票。 azure 支持團隊將在這方面為您提供幫助,因為他們可以查看您的 function 的更多日志詳細信息。 我認為在堆棧溢出社區中很難獲得您想要的幫助。

如果它在應用服務計划中,則需要確保啟用Always On 它在 Function 應用程序上默認啟用,但最好仔細檢查。

消費模式下,沒有 Always On 之類的東西。 相反,您的 Function 應用程序應在計時器到期時自動喚醒。 為此,您的觸發器需要“同步”。

請參閱本文以獲取有關對定時器觸發的 function 應用程序進行故障排除的更多詳細信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM