異步任務
更新時間 2024-11-15 15:27:45
最近更新時間: 2024-11-15 15:27:45
分享文章
當對函數發起異步調用時,如果需要追蹤并保存異步調用各個階段的狀態,實現更豐富的任務控制和可觀測能力,可以選擇開啟任務模式處理異步請求。本文介紹異步任務的背景信息、使用限制和常用功能。
背景信息
開啟異步任務后,可以實現以下功能:
- 每次函數調用將詳細記錄調用過程中的狀態轉換信息,例如排隊等待處理中(Enqueued)、調用執行成功(Succeeded)和調用執行失敗(Failed)等。
- 擁有函數請求生命周期管理能力,可以主動終止執行中的異步任務。
異步任務會保存狀態信息,因此,函數的調用和執行會有一定的額外延遲,該延遲不會產生額外的費用。
使用限制
-
場景限制
異步任務雖然功能更豐富,但相應的系統開銷更大。以下場景建議關閉任務模式:
- 對請求處理鏈路延時非常敏感,需要平均延時在百毫秒以下。
- 需要每秒數千甚至更高的速率發起異步調用。
-
地域限制
異步任務支持華東1地域。
-
時效限制
僅支持查詢7天內的任務狀態信息。
任務管理
異步任務的狀態
針對每一次任務調用,函數計算均會記錄任務的狀態變更過程,并提供實時的狀態查詢能力。可以通過SDK或函數計算控制臺查看任務的具體狀態。目前任務有如下幾種狀態:
| 執行狀態 | 說明 |
|---|---|
| 已入隊 | 異步消息已入隊,等待處理。 |
| 執行中 | 調用執行中,實例已經開始運行任務代碼。 |
| 執行成功 | 調用執行成功。 |
| 執行失敗 | 調用執行失敗。 |
| 已停止 | 調用執行終止。 |
| 停止中 | 執行停止中。 |
| 已過期 | 異步消息配置了存活有效期,該任務因過期已被丟棄(未觸發)。 |
| 無效 | 任務處于無效狀態(未觸發)。 |
| 重試中 | 異步調用因執行錯誤而進行重試中。 |
管理任務
函數開啟異步任務模式
- 登錄函數計算控制臺,在左側導航欄,單擊函數。
- 在頂部菜單欄,選擇地域,然后在函數頁面,單擊目標函數。
- 在函數詳情頁面,選擇配置頁簽,然后在左側選擇異步配置。
- 在異步配置頁面的異步配置區域,單擊編輯,然后在異步配置面板,任務模式選擇開啟后單擊部署。
啟動或停止任務
- 登錄函數計算控制臺,在左側導航欄,單擊函數。
- 在頂部菜單欄,選擇地域,然后在函數頁面,單擊目標函數。
- 在函數詳情頁面,選擇任務頁簽,單擊提交任務,在彈出的對話框,選擇任務ID生成方式和任務執行時間,然后單擊確定。
- 可以在下方任務列表查看任務狀態、任務ID、執行時長等。
事件觸發
可以通過創建支持異步調用的觸發器來觸發異步任務,比如日志觸發器、對象存儲觸發器等。
任務防重復提交
為了避免任務重復執行,函數計算支持為每次提交的任務設定全局唯一的任務ID。
函數計算提供任務ID這一任務概念,該ID全局唯一。函數計算會對重復提交的任務進行校驗,當有相同任務ID進入系統時,該次請求將認為是重復提交而被拒絕。