--- tags: 新人資訊 GA: G-YWCCFEGXSJ --- [新人資訊](https://hackmd.io/@newman/portal-info) # 技術-後台類-azure function #4-自動定時執行 基於目前掌握的技術:1. azure function 基本結構,2. 爬蟲整合,3. 資料庫整合,接下來要讓程式自動化執行。記得在初次建立 function 的第一步,就必須選擇「專案類型」,當時我們選擇了「HttpTrigger」,從一開始程式結構就已經區分開,所以必須新增一個新的 function,用 vs code 同專案裡新增一個 function,選擇 Timer trigger,取一個名稱,設定執行頻率,預設為每五分鐘執行一次,設定格式遵照 NCronTab,可參閱文件。 ![](https://newprediction.blob.core.windows.net/notebook-img/azure-function.png) ![](https://newprediction.blob.core.windows.net/notebook-img/azure-function01.png) ![](https://newprediction.blob.core.windows.net/notebook-img/azure-function02.png) ![](https://newprediction.blob.core.windows.net/notebook-img/azure-function03.png) 即刻原封不動執行偵錯,觀察 logging 確認執行正常,這得來也未免太容易了吧! ![](https://newprediction.blob.core.windows.net/notebook-img/azure-function04.png) 把之前在 HttpTrigger 的程式移植過來,三行就搞定了,差別在於 day 參數本來是用網址列傳入,改成去抓系統當天的日期,語法也很簡單。記得相關的 import 和函數本體也要一併移植。為了測試方便將執行頻率改成每分鐘;只要修改 function.json 即可。 ![](https://newprediction.blob.core.windows.net/notebook-img/azure-function05.png) ![](https://newprediction.blob.core.windows.net/notebook-img/azure-function06.png) 啟動偵錯,觀察 log,一切正常。 ![](https://newprediction.blob.core.windows.net/notebook-img/azure-function07.png) 到了最後一步 deploy to azure,設定正式執行時間為每日下午三點,也就是 UTC Time 七點。 ![](https://newprediction.blob.core.windows.net/notebook-img/azure-function08.png) 觀察 azure 主控台,已經多了一個 function,時間正好過了下午三點,顯示執行一次。查詢資料庫,當天的最新資料已經填入了。 ![](https://newprediction.blob.core.windows.net/notebook-img/azure-function09.png) ![](https://newprediction.blob.core.windows.net/notebook-img/azure-function10.png) ![](https://newprediction.blob.core.windows.net/notebook-img/azure-function11.png) 附帶一提,我曾經使用 asp.net code 平台開發 background job,其複雜度門檻有點高,文件也附在後面,好不容易開發出來後 deploy to azure app service 卻發現無法自動執行,困擾許久後才發現 app service 的免費層是不支援「always on」的,意思是當網站一段時間沒人使用後,後台就會進入「休眠」狀態,因此 background job 也就跟著罷工了!現在使用 function app 輕易就過了這個坎,真是大大爽快呀! ![](https://newprediction.blob.core.windows.net/notebook-img/azure-function12.png) 完成以上開發和佈署,如同請了一個忠信的小幫手,每天下午三點時間一到就會乖乖地達成任務,在所設計的結構基礎上累積資料。下一步也許會想要把資料整批擷取出來用表格或圖表呈現,function app 不只是抓資料,也將搖身一變成為資料的供應者 api service,成為分析應用的後台支柱。待續。 By Newman Chen 2022/3/4 參考資料: https://github.com/atifaziz/NCrontab https://docs.microsoft.com/zh-tw/aspnet/core/fundamentals/host/hosted-services?view=aspnetcore-6.0&tabs=visual-studio