本文介紹非同步任務的狀態以及如何管理非同步任務,包括建立、啟動、停止和查看非同步任務。
通過控制台管理工作
在建立函數時建立非同步任務
- 登入Function Compute控制台,在左側導覽列,單擊任務。
- 在頂部功能表列,選擇地區,然後在任務處理函數頁面,單擊建立函數。
在建立函數頁面,填寫函數各配置項並建立觸發器,然後單擊建立。
說明關於建立函數的具體步驟,請參見建立函數。
您可以在建立函數頁面建立函數的同時配置觸發器,也可以待函數建立成功後,在目標函數的觸發器管理頁簽,建立觸發器。
使用上述方法建立的函數將自動開啟非同步策略的任務模式,您後續對該函數發起的非同步呼叫請求將按照任務模式處理。
建立完成後,在任務處理函數頁面的函數名稱列表顯示您剛才建立的函數。
為已有函數開啟非同步任務模式
前提條件:建立函數
- 登入Function Compute控制台,在左側導覽列,單擊服務及函數。
- 在頂部功能表列,選擇地區,然後在服務列表頁面,單擊目標服務。
單擊目標函數,在函數詳情頁面,單擊非同步配置頁簽,然後在非同步策略地區,單擊編輯。
在編輯非同步策略面板,任務模式選擇開啟,然後單擊確定。
啟動或停止任務
- 登入Function Compute控制台,在左側導覽列,單擊任務。
- 在頂部功能表列,選擇地區。
在任務處理函數頁面,單擊目標函數。
在非同步工作清單頁簽,單擊提交任務,在彈出的對話方塊選擇任務ID產生方式和任務執行時間,然後單擊確定。
您也可以單擊提交任務右側的表徵圖,從下拉式清單中選擇配置任務參數,事件函數將以event的形式,HTTP函數將以HTTP參數的形式輸入參數傳遞給函數,類比提交任務。
提交任務後,重新整理頁面,您可以看到執行中或已完成的任務。您可以按需登入執行個體、停止任務、重新執行任務和查看日誌等。
說明非同步任務中,HTTP函數暫不支援重新執行任務。
調用API(SDK)管理工作
建立非同步任務
調用PutFunctionAsyncInvokeConfig介面,配置非同步呼叫模式為任務模式。將AsyncConfig配置為如下內容,完成該配置後,該函數的所有非同步呼叫將變為任務模式。
{
"statefulInvocation": true
}
您配置非同步呼叫模式為任務模式後,您仍然可以使用同步方式調用函數,但非同步任務模式只針對非同步呼叫生效。
開啟任務模式
您可以通過調用InvokeFunction介面觸發一次非同步呼叫來啟動任務模式。您可以在調用時添加HTTP要求標頭X-Fc-Stateful-Async-Invocation-Id
來為本次調用設定任務ID,更多資訊,請參見任務去重。
查看任務
您提交任務後,如需查詢某次執行的狀態或執行記錄等資訊,您可以調用GetStatefulAsyncInvocation介面進行查詢。
如果您需要根據關鍵字或條件查詢合格任務執行列表,您可以調用ListStatefulAsyncInvocations介面來實現。
停止任務
您提交任務後,可根據需要停止任務。您可以調用StopStatefulAsyncInvocation介面執行停止任務操作。停止任務時需要提供TaskID,此ID為您提交任務時設定的TaskID,也可以是調用ListStatefulAsyncInvocations介面查詢運行中任務時,擷取的ID。
非同步任務的狀態
針對每一次任務調用,Function Compute均會記錄任務的狀態變更過程,並提供即時的狀態查詢能力。您可以通過SDK或Function Compute控制台查看任務的具體狀態。目前任務有如下幾種狀態:
執行狀態 | 說明 |
已入隊 | 非同步訊息已入隊,等待處理。 |
已處理 | 非同步訊息已出隊,等待觸發。 |
執行中 | 調用執行中,您的執行個體已經開始運行任務代碼。 |
執行成功 | 調用執行成功。 |
執行失敗 | 調用執行失敗。 |
已停止 | 您已手動停止該次任務調用。任務已成功終止。 |
停止中 | 您手動停止了該次任務,任務嘗試停止中。 |
已到期 | 您給非同步訊息配置了存活有效期間,該訊息因到期已被丟棄(未觸發)。 |
無效 | 您的執行因函數或服務被刪除等原因處於無效狀態(未觸發)。 |
重試中 | 非同步呼叫因執行錯誤重試中。當系統準備好重試後,您的任務將會再次變為Running狀態。 |
您可以調用GetStatefulAsyncInvocation介面擷取某次任務執行的詳細資料,也可以調用ListStatefulAsyncInvocations介面過濾指定狀態的任務。