本篇文章1007字,讀完約3分鐘

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


任務(wù)狀態(tài)輪詢

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

標(biāo)題:阿里云賬號(hào)注冊(cè)免費(fèi)開通,阿里云國(guó)際站

地址:http://www.tantricheartwheels.com/kfxw/64299.html