阿里云國際站經銷商,主營阿里云,騰訊云,華為云,亞馬遜aws,谷歌云gcp,微軟云az,免費開戶,代充值優惠大,聯系客服飛機@jkkddd

簡介
在長時間任務的場景中如果任務結束后沒有回調機制,開發者通常會采用輪詢的方式來判斷任務的結束。可靠的輪詢實現需要維護狀態的持久化以保證即使當前輪詢進程失敗退出,進程恢復后輪詢也會繼續進行。本示例通過一個假設場景:用戶調用函數計算提交了一個多媒體處理任務,該任務耗時從1分鐘到幾小時不等,任務執行狀態可以通過API查詢,介紹如何使用Serverless工作流實現一個通用可靠的任務輪詢工作流。
Serverless工作流實現
下面的教程會將兩個FC函數編排成一個任務輪詢工作流,該示例需要以下3個步驟:
創建FC函數
創建Serverless工作流流程
開始執行并查看結果
步驟1:創建FC函數
首先創建一個名為fnf-demo的FC服務,并在該服務下創建兩個Python2.7的函數,詳細步驟,請參見使用控制臺創建函數。
StartJob函數:模擬通過調用API開始一個長時間的任務,返回一個任務ID。
GetJobStatus函數:模擬通過調用API獲取指定任務的執行結果,比較當前的時間和函數第一次執行的時間的差值和輸入中delay的值,返回不同的狀態:“success”或“running”。
步驟2:創建Serverless工作流流程
該流程的主要邏輯描述如下:
StartJob步驟:調用StartJob函數開始一個任務。
Wait10s步驟:等待10秒。
GetJobStatus步驟:調用GetJobStatus。
CheckJobComplete步驟:檢查GetJobStatus函數返回的結果:
如果返回"success"整個流程執行成功。
如果輪詢嘗試次數大于3次,認為任務執行失敗,流程執行失敗。
如果返回"running"則跳回到Wait10s步驟,繼續執行。
步驟3:開始執行并查看結果
在控制臺創建好的流程中單擊新執行并提供以下JSON對象作為輸入,其中delay字段的值模擬任務完成需要的時間,這里預期任務在開始20秒后,GetJobStatus函數返回“success”,在此之前均返回“running”,您可以調整delay的值觀察不同的執行結果

相關查詢
溫馨提示:尊敬的[]站點管理員,將本頁鏈接加入您的網站友情鏈接,下次可以快速來到這里更新您的站點信息哦!每天更新您的[阿里云賬號注冊免費開通,阿里云國際站]站點信息,可以排到首頁最前端的位置,讓更多人看到您站點的信息哦。
