Tous les produits
Search
Centre de documentation

Function Compute:Résoudre l'erreur « Invocation canceled by client »

Dernière mise à jour :Aug 12, 2026

L'erreur « Invocation canceled by client » indique que le client s'est déconnecté avant la fin de l'exécution de la fonction. Function Compute interrompt alors l'exécution et consigne cette erreur dans les journaux.

Message d'erreur

Le journal des requêtes affiche l'erreur suivante :

FC Invoke End RequestId: 1-64263a4b-2cd7c98b677*********, Error: Invocation canceled by client (duration: 4912ms, maxMemoryUsage: 0.00MB)

Cause

Cette erreur survient lorsque le client annule la requête avant la fin de l'exécution de la fonction, ce qui provoque son interruption.

Les causes les plus fréquentes sont les suivantes :

  • Le délai d'attente côté client est inférieur à la durée d'exécution effective de la fonction.

  • Un utilisateur a annulé manuellement la requête, par exemple en cliquant sur Cancel Request dans la console Function Compute ou en fermant l'onglet du navigateur.

  • Un service intermédiaire (tel qu'API Gateway) impose un délai d'attente backend plus court que la durée d'exécution de la fonction.

Solution

Étape 1 : Vérifier la durée d'exécution

Récupérez la valeur duration dans le message d'erreur pour connaître le temps d'exécution écoulé avant la déconnexion du client.

Dans l'exemple ci-dessus, duration: 4912ms indique que la fonction s'est exécutée pendant environ 5 secondes.

Étape 2 : Évaluer si cette durée est normale

Comparez la durée observée au temps d'exécution attendu pour votre fonction :

Augmenter le délai d'attente côté client

Si la durée d'exécution de la fonction correspond aux attentes, le délai d'attente du client est insuffisant. Ajustez ce paramètre selon la méthode d'appel utilisée :

Appel via SDK ou API

Définissez un délai d'attente côté client supérieur au délai configuré pour la fonction.

Exemple en Go : configurez le délai via la propriété Timeout de http.Client. Si vous utilisez context.Context pour initier la requête, ajustez plutôt la date limite ou le délai d'attente du contexte.

// Set the HTTP client timeout to 120 seconds
client := &http.Client{
    Timeout: 120 * time.Second,
}

Appel via un autre service

Si un autre service Alibaba Cloud (comme API Gateway) déclenche la fonction, modifiez le délai d'attente backend de ce service.

Exemple avec API Gateway : ajustez les paramètres de délai d'attente backend dans la console API Gateway. Pour plus d'informations, consultez Créer une API.

Appel depuis la console

Lorsque vous appelez une fonction depuis la console Function Compute, ne cliquez pas sur Cancel Request et ne fermez pas l'onglet du navigateur avant la fin de l'exécution.

Réduire le temps d'exécution de la fonction

Si la fonction prend plus de temps que prévu, analysez ses journaux pour identifier le goulot d'étranglement. La latence des E/S et les opérations intensives en calcul constituent les deux causes les plus courantes.

Opérations d'E/S

Les E/S réseau représentent la principale source de latence inattendue. Ajoutez des entrées de journal avant et après chaque appel externe (requêtes de base de données, appels API, opérations de stockage) afin d'isoler l'appel lent.

import time, logging

start = time.time()
# Call to external service
response = external_service.query(params)
logging.info(f"External service call took {time.time() - start:.2f}s")

Opérations de calcul

Des traitements exigeants en CPU peuvent également allonger la durée d'exécution. Si le profilage confirme un goulot d'étranglement lié au calcul, augmentez les spécifications CPU allouées à la fonction.