日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

錯誤處理

Serverless 工作流支持與多個云服務集成,當使用云服務作為Serverless 工作流任務步驟的執行節點時,您可以根據業務場景對執行的錯誤進行重試或捕獲處理,使您的任務在生產場景中更穩定地運行。本文介紹錯誤處理的方式及如何在不同的業務場景中進行錯誤處理的最佳實踐。

錯誤處理方式

Serverless 工作流的任務步驟不僅支持對錯誤的捕獲,而且也支持對錯誤捕獲后的處理,例如重試及跳轉。更多信息,請參見任務步驟

  • 錯誤重試。
    steps:
      - type: task
        name: hello
        resourceArn: acs:fc:{region}:{accountID}:xxx
        retry:
          - errors:
              - FnF.ALL
            intervalSeconds: 10
            maxIntervalSeconds: 300
            maxAttempts: 3
            multiplier: 2
    表 1. 錯誤重試的參數說明
    參數描述
    retry表示該任務步驟錯誤處理類型為重試。
    errors表示需要捕獲的錯誤列表。
    intervalSeconds表示重試的初始間隔時間,最大值是86400秒,默認值是1秒。單位:秒。
    maxAttempts表示最多重試次數,默認值是3次。
    multiplier表示后一次重試比前一次重試間隔時間的倍數,默認值是2。按照上文的代碼示例,第二次重試時間間隔為20秒,第三次重試時間間隔為40秒。
  • 錯誤跳轉。
    steps:
      - type: task
        name: hello
        resourceArn: acs:fc:{region}:{accountID}:xxx
        errorMappings:
          - target: errMsg
            source: $local.cause #該值為系統預留,在本步驟發生錯誤時可直接使用。
          - target: errCode
            source: $local.error #該值為系統預留,在本步驟發生錯誤時可直接使用。
        catch:
          - errors:
            - FnF.ALL
            goto: final
    表 2. 錯誤跳轉的參數說明
    參數描述
    errorMappings指定跳轉支持傳遞本步驟中的錯誤字段。
    catch表示該任務節點的捕獲策略。
    errors表示需要捕獲的錯誤列表。
    goto表示當任務拋出對應錯誤后,進行跳轉的對象。

使用函數計算作為Serverless 工作流的執行節點

當使用函數計算作為Serverless 工作流的執行節點時,您需要關注以下錯誤類型:
  • 函數計算系統提示的異常錯誤。
  • 函數代碼錯誤。
這些錯誤可以在Serverless 工作流errors的任務中進行捕獲。

函數計算或Serverless工作流系統常見的系統錯誤

常見的錯誤類型如下:
- errors:
  - FC.ResourceThrottled
  - FC.ResourceExhausted
  - FC.InternalServerError
  - FC.Unknown
  - FnF.TaskTimeout
  - FnF.ALL
表 3. 常見的錯誤類型
錯誤類型描述
FC.{ErrorCode}函數計算服務返回除200的HTTP Code。常見的錯誤類型如下所示:
  • FC.ResourceThrottled:您的函數因為并發度過高被限流。您所有的函數由一個總的并發度控制。Serverless 工作流執行到任務類型節點時會同步調用函數計算,此數值與其他調用方式的并發度共用。您可以申請調整該值。
  • FC.ResourceExhausted:您的函數因為資源不足被限流。當出現這類錯誤時,請聯系我們
  • FC.InternalServerError:函數計算出現系統錯誤,請重新執行流程。
說明 {Error code}是函數計算的錯誤碼。詳細信息,請參見錯誤碼列表
FC.Unknown函數計算服務調用函數成功,但函數執行出錯,且該錯誤碼未被捕獲,例如UnhandledInvocationError等。
{CustomError}函數計算服務調用函數成功,但函數主動拋出異常錯誤。
FnF.TaskTimeoutServerless 工作流某步驟執行超時。
FnF.ALL捕獲Serverless 工作流系統的所有錯誤。
FnF.TimeoutServerless 工作流整體執行超時。

自定義代碼錯誤

除了函數計算和Serverless 工作流系統常見的錯誤類型外,您也可以自定義錯誤類型,在函數代碼中主動拋出異常,方便將函數執行的狀態或錯誤傳遞給Serverless 工作流,然后Serverless 工作流再根據流程對任務進行重試或跳轉。下文以Python為例介紹如何在函數代碼中自定義錯誤類型,并在Serverless 工作流的任務中進行重試處理。具體步驟如下:
  1. 自定義函數代碼。
    ...
    class ErrorNeedsRetry(Exception):
        pass
      
    def handler(event, context):
        try:
            # do sth
        except ServerException:
            raise ErrorNeedsRetry("custom error message")
  2. 按需修改Serverless 工作流的任務流程進行函數計算的錯誤捕獲及重試。
    retry:
      - errors:
          - ErrorNeedsRetry
      intervalSeconds: 10
      maxAttempts: 3
      multiplier: 2

使用MNS等其他云服務作為任務的執行節點

當使用其他第三方云服務作為任務的執行節點時,Serverless 工作流將直接調用相應服務的API對任務進行下發。

以MNS為例,當Serverless 工作流需要發送消息時,將調用MNS的SendMessage接口。詳細信息,請參見SendMessage。這類任務通常是API調用,不存在等待函數執行結果的情況,且Serverless 工作流內部會對可重試的錯誤進行多次合理重試。因此,當您使用MNS、視覺智能API等云服務作為任務的執行節點時,在流程中您無需關注錯誤處理。