本篇文章1007字,讀完約3分鐘
阿里云國際站經(jīng)銷商,主營阿里云,騰訊云,華為云,亞馬遜aws,谷歌云gcp,微軟云az,免費開戶,代充值優(yōu)惠大,聯(lián)系客服飛機@jkkddd
簡介
在長時間任務(wù)的場景中如果任務(wù)結(jié)束后沒有回調(diào)機制,開發(fā)者通常會采用輪詢的方式來判斷任務(wù)的結(jié)束??煽康妮喸儗崿F(xiàn)需要維護狀態(tài)的持久化以保證即使當(dāng)前輪詢進程失敗退出,進程恢復(fù)后輪詢也會繼續(xù)進行。本示例通過一個假設(shè)場景:用戶調(diào)用函數(shù)計算提交了一個多媒體處理任務(wù),該任務(wù)耗時從1分鐘到幾小時不等,任務(wù)執(zhí)行狀態(tài)可以通過API查詢,介紹如何使用Serverless工作流實現(xiàn)一個通用可靠的任務(wù)輪詢工作流。
Serverless工作流實現(xiàn)
下面的教程會將兩個FC函數(shù)編排成一個任務(wù)輪詢工作流,該示例需要以下3個步驟:
創(chuàng)建FC函數(shù)
創(chuàng)建Serverless工作流流程
開始執(zhí)行并查看結(jié)果
步驟1:創(chuàng)建FC函數(shù)
首先創(chuàng)建一個名為fnf-demo的FC服務(wù),并在該服務(wù)下創(chuàng)建兩個Python2.7的函數(shù),詳細(xì)步驟,請參見使用控制臺創(chuàng)建函數(shù)。
StartJob函數(shù):模擬通過調(diào)用API開始一個長時間的任務(wù),返回一個任務(wù)ID。
GetJobStatus函數(shù):模擬通過調(diào)用API獲取指定任務(wù)的執(zhí)行結(jié)果,比較當(dāng)前的時間和函數(shù)第一次執(zhí)行的時間的差值和輸入中delay的值,返回不同的狀態(tài):“success”或“running”。
步驟2:創(chuàng)建Serverless工作流流程
該流程的主要邏輯描述如下:
StartJob步驟:調(diào)用StartJob函數(shù)開始一個任務(wù)。
Wait10s步驟:等待10秒。
GetJobStatus步驟:調(diào)用GetJobStatus。
CheckJobComplete步驟:檢查GetJobStatus函數(shù)返回的結(jié)果:
如果返回"success"整個流程執(zhí)行成功。
如果輪詢嘗試次數(shù)大于3次,認(rèn)為任務(wù)執(zhí)行失敗,流程執(zhí)行失敗。
如果返回"running"則跳回到Wait10s步驟,繼續(xù)執(zhí)行。
步驟3:開始執(zhí)行并查看結(jié)果
在控制臺創(chuàng)建好的流程中單擊新執(zhí)行并提供以下JSON對象作為輸入,其中delay字段的值模擬任務(wù)完成需要的時間,這里預(yù)期任務(wù)在開始20秒后,GetJobStatus函數(shù)返回“success”,在此之前均返回“running”,您可以調(diào)整delay的值觀察不同的執(zhí)行結(jié)果
標(biāo)題:阿里云賬號注冊免費開通,阿里云國際站
地址:http://www.pengfei-china.com/kfxw/64299.html