文档

重试机制

更新时间:

本节主要介绍升级版 SDK 的重试机制。

升级版 SDK 对 OpenAPI 请求中遇到网络问题的情况会进行重试,对于业务报错则不会重试。在请求中通过运行时参数配置重试,优先级为 RuntimeOption -> 默认;默认不会进行重试,如果打开重试配置未配置重试次数,则默认最多重试3次:

package main

import (
    "encoding/json"
    "fmt"

    openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
    ecs20140526 "github.com/alibabacloud-go/ecs-20140526/v3/client"
    util "github.com/alibabacloud-go/tea-utils/v2/service"
    "github.com/alibabacloud-go/tea/tea"
)

func main() {
    config := &openapi.Config{
        // 您的AccessKey ID
        AccessKeyId: tea.String("<AccessId>"),
        // 您的AccessKey Secret
        AccessKeySecret: tea.String("<AccessSecret>"),
        // 访问的 Region
        RegionId: tea.String("<RegionId>"),
    }
    client, _err := ecs20140526.NewClient(config)
    if _err != nil {
        panic(_err)
    }
    describeRegionsRequest := &ecs20140526.DescribeRegionsRequest{}
    // 创建RuntimeObject实例并设置运行参数。
    runtime := &util.RuntimeOptions{}
    // 开启自动重试机制
    runtime.Autoretry = tea.Bool(true)
    // 设置自动重试次数
    runtime.MaxAttempts = tea.Int(3)
    resp, _err := client.DescribeRegionsWithOptions(describeRegionsRequest, runtime)
    if _err != nil {
        panic(_err)
    }
    // response 包含服务端响应的 body 和 headers
    body, err := json.Marshal(resp.Body)
    if err != nil {
        panic(err)
    }
    fmt.Printf("body: %s\n", string(body))
}
  • 本页导读 (1)
文档反馈