Todos los productos
Search
Centro de documentos

Function Compute:Solución de problemas del error "Invocation canceled by client"

Última actualización: Sep 06, 2026

El error "Invocation canceled by client" indica que el cliente se desconectó antes de que la función terminara de ejecutarse. Function Compute interrumpe la ejecución y registra el error.

Mensaje de error

A continuación se muestra el error que aparece en el registro de la solicitud:

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

Causa

El cliente canceló la solicitud antes de que la función terminara, lo cual interrumpe la ejecución y genera el error.

Las causas más comunes son las siguientes:

  • El tiempo de espera de la solicitud del lado del cliente es menor que la duración de ejecución de la función.

  • Un usuario canceló manualmente la solicitud (por ejemplo, al hacer clic en Cancel Request en la consola de Function Compute o al cerrar la pestaña del navegador).

  • Un servicio intermediario (como API Gateway) aplicó un tiempo de espera del backend menor que la duración de ejecución de la función.

Solución

Paso 1: Compruebe la duración de la ejecución

Extraiga el valor duration del mensaje de error para conocer cuánto tiempo se ejecutó la función antes de que el cliente se desconectara.

En el ejemplo anterior, duration: 4912ms significa que la función se ejecutó durante aproximadamente 5 segundos.

Paso 2: Determine si la duración es la esperada

Compare la duración con el tiempo de ejecución esperado para su función:

Aumente el tiempo de espera del cliente

Si la duración de ejecución de la función está dentro de lo esperado, el tiempo de espera del cliente es demasiado corto. Ajuste este valor según la forma en que invoque la función:

Invocación mediante SDK o API

Establezca el tiempo de espera de la solicitud del lado del cliente en un valor mayor que el tiempo de espera configurado para la función.

Ejemplo en Go: establezca el tiempo de espera mediante la propiedad Timeout en http.Client. Si utiliza context.Context para iniciar la solicitud, ajuste el límite de tiempo o el tiempo de espera del contexto.

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

Invocación a través de otro servicio

Si otro servicio de Alibaba Cloud (como API Gateway) activa la función, modifique el tiempo de espera del backend de dicho servicio.

Ejemplo con API Gateway: ajuste la configuración del tiempo de espera del backend en la consola de API Gateway. Para obtener más información, consulte Create an API.

Invocación desde la consola

Cuando invoque una función desde la consola de Function Compute, no haga clic en Cancel Request ni cierre la pestaña del navegador antes de que la función termine de ejecutarse.

Reduzca el tiempo de ejecución de la función

Si la función tarda más de lo esperado, revise los registros de la función para identificar el cuello de botella. Las dos causas más comunes son la latencia de E/S y las operaciones intensivas en cómputo.

Operaciones de E/S

La E/S de red es la causa principal de la latencia inesperada. Agregue registros antes y después de cada llamada externa (consultas a bases de datos, solicitudes de API, operaciones de almacenamiento) para aislar la llamada lenta.

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")

Operaciones de cómputo

Las operaciones intensivas en CPU también pueden aumentar la duración de la ejecución. Si el análisis de rendimiento confirma un cuello de botella de cómputo, aumente las especificaciones de CPU asignadas a la función.