重试机制

更新时间:

V2.0 SDK中,OpenAPI请求处理逻辑内置了网络异常的自动重试机制。当请求因网络问题失败时,系统会自动重新尝试,以提升服务的稳定性和可靠性。但对于由业务逻辑引发的错误(如参数错误、资源不存在等),SDK不会进行重试。这类错误通常需要应用程序根据具体的错误信息进行针对性处理或调整,而非简单重复请求 。本文将为您介绍V2.0 SDK对于网络异常的自动重试机制的配置方式。

重试机制配置方式

说明

重试机制配置优先级为:RuntimeOptions配置->默认配置,优先级依次降低。

  • 使用默认配置。默认情况下不会进行重试,如果打开重试配置且未配置重试次数,则默认最多重试3次。

  • 通过运行时参数(RuntimeOptions)配置重试机制。

    const { default: Ecs20140526, ModifySecurityGroupRuleRequest, DescribeRegionsRequest } = require('@alicloud/ecs20140526');
    const { Config } = require('@alicloud/openapi-client');
    const { RuntimeOptions } = require('@alicloud/tea-util');
    
    async function main() {
        const config = new Config({
            // 从环境变量中获取RAM用户的AccessKey ID
            accessKeyId: process.env.ALIBABA_CLOUD_ACCESS_KEY_ID,
            // 从环境变量中获取RAM用户的AccessKey Secret
            accessKeySecret: process.env.ALIBABA_CLOUD_ACCESS_KEY_SECRET,
            // 访问的地域
            regionId: 'cn-beijing',
        });
        const client = new Ecs20140526(config);
        const request = new DescribeRegionsRequest();
        // 创建RuntimeOptions实例并设置运行参数。
        const runtime = new RuntimeOptions({
            // 设置打开重试
            autoretry: true,
            // 设置重试次数
            maxAttempts: 3,
        });
        const resp = await client.describeRegionsWithOptions(request, runtime);
        console.log(resp.headers);
        console.log(resp.body);
    }
    
    main();
    import Ecs20140526, * as $Ecs20140526 from '@alicloud/ecs20140526';
    import * as $OpenApi from '@alicloud/openapi-client';
    import * as $Util from '@alicloud/tea-util';
    
    export default class Client {
        static async main(): Promise<void> {
            const config = new $OpenApi.Config({
                // 从环境变量中获取RAM用户的AccessKey ID
                accessKeyId: process.env.ALIBABA_CLOUD_ACCESS_KEY_ID,
                // 从环境变量中获取RAM用户的AccessKey Secret
                accessKeySecret: process.env.ALIBABA_CLOUD_ACCESS_KEY_SECRET,
                // 访问的地域
                regionId: 'cn-beijing',
            });
            const client = new Ecs20140526(config);
            const request = new $Ecs20140526.DescribeRegionsRequest();
            // 创建RuntimeOptions实例并设置运行参数。
            const runtime = new $Util.RuntimeOptions({
                // 设置打开重试
                autoretry: true,
                // 设置重试次数
                maxAttempts: 3,
            });
            const resp = await client.describeRegionsWithOptions(request, runtime);
            console.log(resp.headers);
            console.log(resp.body);
        }
    }