并发请求

更新时间:

本文介绍如何开启Go SDK Client的并发功能。

开启 SDK Client 的并发功能

  • 因 Go 语言的并发特性,我们建议您在应用层面控制 SDK 的并发请求。

  • 为了方便您的使用,我们也提供了可直接使用的并发调用方式,相关的并发控制由 SDK 内部实现。

package main

import (
        "fmt"
	"github.com/aliyun/alibaba-cloud-sdk-go/sdk"
	"github.com/aliyun/alibaba-cloud-sdk-go/sdk/auth/credentials"
	"github.com/aliyun/alibaba-cloud-sdk-go/services/ecs"
	"os"
)

func main() {
	// 最大并发数,可选,默认5
	poolSize := 2
	// 可缓存的最大请求数,可选,默认1000
	maxTaskQueueSize := 5
	// 在创建时开启异步功能
	config := sdk.NewConfig().WithEnableAsync(true).WithGoRoutinePoolSize(poolSize).WithMaxTaskQueueSize(maxTaskQueueSize)
	// 初始化credential
	credential := &credentials.AccessKeyCredential{AccessKeyId: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), AccessKeySecret: os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")}
	ecsClient, err := ecs.NewClientWithOptions("cn-beijing", config, credential)
        if err != nil {
		fmt.Printf("Error : %v\n", err)
		return
	}	
        // 也可以在client初始化后再开启
	ecsClient.EnableAsync(poolSize, maxTaskQueueSize)
}