全部產品
Search
文件中心

Function Compute:任務管理

更新時間:Jul 06, 2024

本文介紹非同步任務的狀態以及如何管理非同步任務,包括建立、啟動、停止和查看非同步任務。

通過控制台管理工作

在建立函數時建立非同步任務

  1. 登入Function Compute控制台,在左側導覽列,單擊任務
  2. 在頂部功能表列,選擇地區,然後在任務處理函數頁面,單擊建立函數
  3. 建立函數頁面,填寫函數各配置項並建立觸發器,然後單擊建立

    說明
    • 關於建立函數的具體步驟,請參見建立函數

    • 您可以在建立函數頁面建立函數的同時配置觸發器,也可以待函數建立成功後,在目標函數的觸發器管理頁簽,建立觸發器。

    • 使用上述方法建立的函數將自動開啟非同步策略任務模式,您後續對該函數發起的非同步呼叫請求將按照任務模式處理。

    建立完成後,在任務處理函數頁面的函數名稱列表顯示您剛才建立的函數。

為已有函數開啟非同步任務模式

前提條件:建立函數

  1. 登入Function Compute控制台,在左側導覽列,單擊服務及函數
  2. 在頂部功能表列,選擇地區,然後在服務列表頁面,單擊目標服務。
  3. 單擊目標函數,在函數詳情頁面,單擊非同步配置頁簽,然後在非同步策略地區,單擊編輯。

  4. 編輯非同步策略面板,任務模式選擇開啟,然後單擊確定

啟動或停止任務

  1. 登入Function Compute控制台,在左側導覽列,單擊任務
  2. 在頂部功能表列,選擇地區。
  3. 任務處理函數頁面,單擊目標函數。

  4. 非同步工作清單頁簽,單擊提交任務,在彈出的對話方塊選擇任務ID產生方式和任務執行時間,然後單擊確定

    您也可以單擊提交任務右側的down表徵圖,從下拉式清單中選擇配置任務參數,事件函數將以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介面過濾指定狀態的任務。