依排程執行 Azure 函數
以設定的間隔執行一段邏輯是很常見的情況。 假設您是部落格擁有者,並且注意到訂閱者沒有閱讀您最近的貼文。 您決定最好的方式是每週傳送一封電子郵件,提醒他們查看您的部落格。 您透過在 Azure 中建立函數應用程式搭配計時器觸發程序來每週叫用您的函數,以實作此邏輯。
什麼是計時器觸發程序?
計時器觸發程序是以一致的間隔執行函數的觸發程序。 若要建立計時器觸發程序,您需要提供兩項資訊。
- 「時間戳記參數名稱」,這只是用來在程式碼中存取觸發程序的識別碼。
- 「排程」,即設定計時器間隔的 CRON 運算式。
什麼是 CRON 運算式?
「CRON 運算式」是代表一組時間的字串,由六個欄位所組成。
在 Azure 中的六個欄位的順序是:{second} {minute} {hour} {day} {month} {day of the week}
。
例如,假設要建立每五分鐘執行一次的觸發程序,CRON 運算式會像這樣:0 */5 * * * *
一開始,這個字串可能看起來令人困惑。 當我們更深入探討「CRON 運算式」時,將會回頭詳細說明這些概念。
若要建立「CRON 運算式」,您需要對一些特殊字元有基本的了解。
特殊字元 | 意義 | 範例 |
---|---|---|
* | 選取欄位中的每個值 | 星期幾欄位中的星號 "*" 表示「每天」。 |
, | 分隔清單中的項目 | 星期幾欄位中的逗號 "1,3" 表示只有星期一 (第 1 天) 和星期三 (第 3 天)。 |
- | 指定範圍 | 小時欄位中的連字號 "10-12" 表示包含第 10、11 和 12 小時的範圍。 |
/ | 指定增量 | 分鐘欄位中的正斜線 "*/10" 表示增量為每 10 分鐘。 |
現在,我們將回到原始的 CRON 運算式範例。 讓我們嘗試透過逐欄詳細說明,更充份了解該運算式。
0 */5 * * * *
第一個欄位代表秒。 此欄位支援值 0-59。 因為此欄位包含零,所以會選取第一個可行的值,也就是一秒。
第二個欄位代表分鐘。 值 "*/5" 包含兩個特殊字元。 首先,星號 (*) 表示「選取欄位中的每個值」。因為此欄位代表分鐘數,所以可能的值為 0-59。 第二個特殊字元是表示增量的正斜線 (/)。 當您將這些字元結合在一起時,表示會在所有 0-59 的值當中,選取每五個值的第五個值。 更簡單的說法就是「每五分鐘」。
其餘四個欄位會以數值表示 24 小時、月份中的一天、12 個月中的月份,以及 7 天週中的一天。 這些欄位的星號表示選取每個可能的值。 在此範例中,我們選取「每個月每天的每小時」。
當您將所有欄位放在一起時,運算式讀起來會是「每個月每天每小時每五分鐘的第一秒」。
如何建立計時器觸發程序
您可以在 Azure 入口網站中建立計時器觸發程序。 在函數應用程式中,從觸發程序範本清單選取 [計時器觸發程序]。 輸入您想要執行的邏輯。 提供時間戳記參數名稱和 CRON 運算式。
在此課程模組中,我們將著重於在入口網站中建立觸發程序,但您也可以使用 Core Tools、Visual Studio 或 Visual Studio Code 以程式設計方式建立觸發程序。
計時器觸發程序會以一致的排程叫用函數程式碼。 為了定義計時器觸發程序的排程,我們會建置「CRON 運算式」,這是表示一組時間的字串。