Tous les produits
Search
Centre de documentation

Alibaba Cloud SDK:Utiliser la fonctionnalité d'appels asynchrones

Dernière mise à jour :Aug 11, 2026

Le Classic SDK for Go prend en charge les appels asynchrones, ce qui permet d'envoyer des requêtes API sans bloquer le thread actuel.

Activer la fonctionnalité d'appels asynchrones

Le Classic SDK for Go offre deux méthodes pour activer les appels asynchrones. Une fois cette fonctionnalité activée, appelez Shutdown() avant de pouvoir l'activer à nouveau.

  1. Activez la fonctionnalité d'appels asynchrones lors de l'initialisation d'un client.

    import (
        "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"
    )
    
    c := sdk.NewConfig()
    c.EnableAsync = true // Enable the asynchronous calls feature.
    c.GoRoutinePoolSize = 10 // Configure the number of goroutines.
    c.MaxTaskQueueSize = 20 // Configure the maximum number of tasks for a single goroutine.
    c.Timeout = 10 * time.Second
    credential := credentials.NewAccessKeyCredential("acesskeyid", "accesskeysecret")
    client, err := ecs.NewClientWithOptions("regionid", c, credential)
  2. Activez la fonctionnalité d'appels asynchrones en appelant EnableAsync.

    // Configure the number of goroutines.
    // Configure the maximum number of tasks for a single goroutine.
    // You can call EnableAsync only once. If you want to call EnableAsync again, you must call Shutdown() to disable the asynchronous calls feature.
    client.EnableAsync(10, 20)

Initier un appel asynchrone

Le Classic SDK for Go propose deux méthodes pour initier un appel asynchrone.

  1. Utilisez un canal pour retourner une réponse.

    responseChannel, errChannel := client.FooWithChan(request)
    
    // this will block
    response := <-responseChannel
    err = <-errChannel
  2. Utilisez une fonction de rappel pour obtenir la réponse.

    blocker := client.FooWithCallback(request, func(response *FooResponse, err error) {
        // handle the response and err
    })
    
    // The blocker is of the (chan int) type and is used to control synchronization. If the response is 1, the operation is successful. If the response is 0, the operation failed.
    // If <-blocker returns 0, the operation failed and the error message is passed to the callback function by using err.
    result := <-blocker

Désactiver la fonctionnalité d'appels asynchrones

Appelez Shutdown() pour désactiver les appels asynchrones et fermer les goroutines.

client.Shutdown()