配置函數異步
更新時間 2025-01-13 16:37:11
最近更新時間: 2025-01-13 16:37:11
分享文章
本章介紹函數工作流如何配置函數異步調用。
概述
函數可以被同步或異步調用,異步調用場景下,FunctionGraph持久化請求后立即返回,不等待請求最終處理完成,用戶無法實時感知請求處理結果。如果您希望異步請求處理失敗后重試或者希望獲取異步處理結果通知,可通過函數異步配置項進行設置。
應用場景
- 失敗重試:用戶代碼異常造成的失敗,FunctionGraph默認不重試。如果函數中有需要重試的場景,例如調用三方服務經常失敗,可配置重試提升成功率。
- 結果通知:FunctionGraph可自動通知異步函數的執行結果給下游服務做進一步處理。例如執行失敗信息保存到OBS,后續分析失敗原因;執行成功信息推送到DIS或再次觸發函數做處理等。
操作步驟
1、登錄函數工作流控制臺,在左側的導航欄選擇“函數 > 函數列表”。
2、選擇待配置的函數,單擊進入函數詳情頁。
3、選擇“設置 > 異步配置”,在“異步配置”頁簽,單擊“配置異步調用”。
配置異步調用

4、填寫配置參數,參見如下表,例如設置目標服務為函數工作流(FunctionGraph)。
填寫配置參數

參數說明
| 參數 | 說明 |
|---|---|
| 異步策略配置 | 最大重試次數:異步調用失敗后最大重試次數,默認為1次,取值范圍:0-3。 消息最大有效期(s):消息最大存活時長,取值范圍:1-86400。 |
| 成功時通知 | 目標服務:執行成功時發送通知到以下目標服務 1.函數工作流(FunctionGraph) 2.對象存儲服務(OBS) 3.消息通知服務(SMN) |
| 失敗時通知 | 目標服務:執行失敗時發送通知到以下目標服務 1.函數工作流(FunctionGraph) 2.對象存儲服務(OBS) 3.消息通知服務(SMN) |
5、填寫完成后單擊“確定”。
說明1. 異步配置通知到目標服務時,需配置具有目標服務操作權限的函數委托。
2. 當您在配置異步執行通知目標時,請務必保證不要出現循環調用的情況。例如:您為函數A配置了成功調用時的異步通知目標為函數B,為函數B配置了成功調用時的異步通知目標為函數A,當您異步觸發函數A并且執行成功后,則可能出現A—>B—>A......循環調用的情況。
配置說明
異步調用目標的事件內容參見如下示例:
{
"timestamp": "2020-08-20T12:00:00.000Z",
"request_context": {
"request_id": "1167bf8c-87b0-43ab-8f5f-26b16c64f252",
"function_urn": "urn:fss:xx-xxxx-x:xxxxxxx:function:xxxx:xxxx:latest",
"condition": "",
"approximate_invoke_count": 0
},
"request_payload": "",
"response_context": {
"status_code": 200,
"function_error": ""
},
"response_payload": "hello world!"
}
異步調用目標的配置說明參見下表:
配置參數說明
| 參數 | 說明 |
|---|---|
| timestamp | 調用時間戳。 |
| request_context | 請求上下文。 |
| request_context.request_id | 異步調用的請求ID。 |
| request_context. function_urn | 異步執行的函數URN。 |
| request_context.condition | 調用錯誤類別。 |
| request_context. approximate_invoke_count | 異步調用的執行次數。當該值大于1時,說明函數計算對您的函數進行了重試。 |
| request_payload | 請求函數的原始負載。 |
| response_context | 返回上下文。 |
| response_context.statusCode | 調用函數的返回碼(系統)。當該返回碼不為200時,說明出現了系統錯誤。 |
| response_context.function_error | 調用錯誤信息。 |
| response_payload | 執行函數返回的原始負載。 |