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


任務狀態(tài)輪詢

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

心靈雞湯:

標題:阿里云賬號注冊免費開通,阿里云國際站

地址:http://m.nickbaillie.com/kfxw/64299.html