Todos los productos
Search
Centro de documentos

Function Compute:Asynchronous invocation

Última actualización: Sep 19, 2026

Para las funciones con lógica de larga duración, uso intensivo de recursos o propensa a errores, utilice la invocación asíncrona. Esto mejora la capacidad de respuesta de la aplicación y gestiona de forma confiable los picos de tráfico. Cuando invoca una función de manera asíncrona, no necesita esperar una respuesta. Function Compute almacena la solicitud en una cola interna para garantizar su procesamiento. En este tema se describen los casos de uso y las funciones comunes de la invocación asíncrona.

Casos de uso

A continuación se muestran algunos ejemplos de casos de uso para la invocación asíncrona:

  • Procesamiento de audio y video

    Cuando utiliza Function Compute para cargas de trabajo de audio y video, es común ejecutar tareas que consumen mucho tiempo, como la codificación, decodificación y transcodificación. Al invocar estas tareas de forma asíncrona, se ejecutan en segundo plano sin bloquear el frontend, lo cual mejora la experiencia del usuario. Si un proyecto es grande, también puede dividirlo en varias tareas para procesarlo en paralelo. Otra opción es convertir un video a múltiples formatos mediante la invocación asíncrona de varias funciones. De esta manera se reduce el tiempo total de procesamiento.

  • Procesamiento de datos ETL

    En un pipeline de extracción, transformación y carga (ETL), el proceso de extraer datos de un origen, transformarlos y cargarlos en un sistema de destino suele implicar varias operaciones independientes. Por ejemplo, consultas a bases de datos, operaciones de entrada y salida de archivos o limpieza de datos. La invocación asíncrona permite ejecutar estas operaciones en paralelo, lo que reduce el tiempo de procesamiento y mejora el rendimiento del sistema. Para tareas de larga duración, como el procesamiento de grandes conjuntos de datos o transformaciones complejas, la invocación asíncrona permite ejecutarlas en segundo plano. Así se evita bloquear el frontend y se mejora la experiencia del usuario.

  • Desarrollo de aplicaciones web

    Puede usar Function Compute junto con otros servicios en la nube para construir aplicaciones web rápidamente. Cuando los usuarios envían formularios, ejecutan consultas de búsqueda o cargan páginas con mucho contenido, la invocación asíncrona evita que la página se congele por esperas prolongadas de respuestas del backend. Los usuarios pueden seguir interactuando con otras partes de la página sin notar latencia. En escenarios de alta concurrencia, donde muchos usuarios acceden a la aplicación al mismo tiempo, la invocación asíncrona distribuye la carga de solicitudes y previene la sobrecarga del servicio.

Invocación diferida

Puede configurar Function Compute para desencadenar una invocación asíncrona después de un retraso específico.

Agregue el encabezado de solicitud HTTP x-fc-async-delay a su código. El valor debe estar en segundos y dentro del rango de (0, 3600). Function Compute inicia un temporizador cuando se desencadena la ejecución e invoca la función después del retraso especificado en x-fc-async-delay.

Política de reintentos

El mecanismo de invocación asíncrona incluye manejo de errores y reintentos integrados. Si un paso falla con errores, el sistema puede reprogramar la tarea sin afectar el flujo de trabajo general. Cuando una invocación de función asíncrona falla, Function Compute reintenta automáticamente la invocación.

Mecanismo de reintentos

La siguiente tabla describe la política de reintentos predeterminada para los errores más comunes.

Tipo de error

Comportamiento de reintento

Facturado

Solución

HandledInvocationError y UnhandledInvocationError

Se realizan hasta 3 reintentos de forma predeterminada. Ajuste la cantidad de reintentos según sus necesidades de negocio.

Sí: se factura por invocación. Consulte Descripción general de facturación.

Corrija el error en el código de su función.

Límite de concurrencia excedido

Se reintenta durante un máximo de 5 horas mediante retroceso exponencial. El primer reintento comienza 0.5 segundos después del fallo; los intervalos posteriores se duplican (1 s, 2 s, 4 s, 8 s, …).

No

Aumente su cuota de concurrencia en Quota Center. De forma predeterminada, cada cuenta de Alibaba Cloud puede ejecutar hasta 100 instancias por región.

Error interno

Sin reintentos

No

Póngase en contacto con el soporte técnico a través de DingTalk (ID de grupo: 64970014484).

Recursos insuficientes de Function Compute

Sin reintentos

No

—

Configurar la política de reintentos

Function Compute le permite personalizar el número máximo de reintentos y el tiempo de vida máximo del mensaje.

  1. Inicie sesión en la consola de Function Compute. En el panel de navegación izquierdo, elija Function Management > Functions.

  2. En la barra de navegación superior, seleccione una región. En la página Functions, haga clic en la función de destino.

  3. En la página de detalles de la función, haga clic en la pestaña Tasks y luego haga clic en Task Mode a la derecha de Modify. En el panel Task Mode, establezca los siguientes parámetros. Una vez completada la configuración, haga clic en Deploy.

    Parámetro

    Descripción

    Task Mode

    Especifica si se habilita Task Mode para una tarea asíncrona. Para obtener más información, consulte Asynchronous tasks.

    Maximum Retries

    Número máximo de reintentos para una invocación asíncrona. El valor debe ser un número entero de 0 a 8.

    De forma predeterminada, Function Compute reintenta 3 veces una invocación asíncrona fallida. Puede ajustar la cantidad de reintentos según sus necesidades de negocio.

    Maximum Message Lifetime

    Tiempo de vida máximo de un mensaje en una cola de invocación asíncrona. El valor debe ser un número entero de 1 a 604,800. El valor predeterminado es 86,400. Unidad: segundos.

    Esta duración se calcula desde el momento en que se desencadena la invocación asíncrona. Si el tiempo de vida del mensaje supera el valor configurado, el mensaje se descarta. Los mensajes descartados se registran mediante la métrica de monitoreo Asynchronous Invocation Events en CloudMonitor. Para obtener más información sobre las métricas, consulte Monitoring metrics.

Devolución de llamada de resultado

Cuando Function Compute recibe una solicitud de invocación asíncrona, la almacena y devuelve una respuesta de inmediato sin esperar a que se ejecute. Para conservar las solicitudes que se descartan tras agotar todos los reintentos, o para notificar a un servicio posterior el resultado de la invocación asíncrona, configure la función de devolución de llamada de resultado. Después de configurar un servicio de destino, Function Compute llama automáticamente al servicio correspondiente según el resultado de ejecución cuando finaliza la invocación asíncrona.

Cómo funciona

La siguiente figura muestra el flujo de trabajo de la devolución de llamada de resultado.

image

Casos de uso

  • Guardar eventos descartados para su procesamiento posterior

    Cuando una solicitud asíncrona falla y agota todos los reintentos según la política configurada, Function Compute descarta la solicitud. Si configuró un destino para fallos, Function Compute envía automáticamente la información de contexto de la solicitud fallida a un servicio de mensajería, como ApsaraMQ for RocketMQ, para su procesamiento posterior. También puede establecer otra función como servicio de destino. En ese caso, Function Compute envía automáticamente la información de contexto de la solicitud fallida a dicha función para ejecutar su lógica personalizada de manejo de errores.

  • Notificar automáticamente los resultados de ejecución a los servicios posteriores

    Tras una ejecución exitosa, si se configuró un destino para éxitos, el sistema Function Compute envía automáticamente el contexto de la solicitud al servicio de destino posterior. Por ejemplo, si configura Function Compute para descomprimir automáticamente un archivo ZIP subido a OSS y desea recibir una notificación de mensaje al finalizar, puede configurar un servicio de destino de devolución de llamada de resultado para la función correspondiente.

Servicios de destino compatibles

Si el resultado de una invocación asíncrona cumple con las condiciones configuradas, Function Compute envía el contexto y los datos de la solicitud al servicio de destino especificado. Puede configurar distintos servicios de destino para diferentes funciones, alias y versiones. Los siguientes servicios de destino son compatibles con la invocación asíncrona:

  • Simple Message Queue (formerly MNS)

  • Function Compute

  • EventBridge

  • ApsaraMQ for RocketMQ

Nota
  • Solo puede configurar instancias de la serie 4.0 de ApsaraMQ for RocketMQ como servicio de destino. Las instancias de la serie 5.0 no son compatibles.

  • Para obtener información sobre los límites de carga útil de los servicios de destino, consulte Function runtime resource limits.

La configuración de destinos de invocación asíncrona incluye lo siguiente:

  • Contenido del evento para los destinos de invocación asíncrona

    Cuando Simple Message Queue (formerly MNS), Function Compute o ApsaraMQ for RocketMQ es el destino de una invocación de función asíncrona, el contenido del evento tiene el siguiente formato.

    {
      "timestamp": 1660120276975,
      "requestContext": {
        "requestId": "xxx",
        "functionArn": "acs:fc:{regionid}:{accountid}:functions/xxxx",
           "condition": "FunctionResourceExhausted", 
            "approximateInvokeCount": 3
      },
      "requestPayload": "",
      "responseContext": {
        "statusCode": 200,
        "functionError": ""
      },
      "responsePayload": ""
    }

    Tabla 1. Descripciones de los parámetros

    Parámetro

    Descripción

    timestamp

    Marca de tiempo de la invocación.

    requestContext

    Contexto de la solicitud.

    requestContext.requestId

    ID de solicitud de la invocación asíncrona.

    requestContext.functionArn

    Nombre de recurso de Alibaba Cloud (ARN) de la función invocada de forma asíncrona.

    requestContext.condition

    Código de error de la invocación.

    requestContext.approximateInvokeCount

    Número de veces que se ejecutó la invocación asíncrona. Un valor mayor que 1 indica que Function Compute reintentó la invocación.

    requestPayload

    Carga útil original de la solicitud de la función.

    responseContext

    Contexto de la respuesta.

    responseContext.statusCode

    Código de estado del sistema devuelto por la invocación de la función. Si el código de estado no es 200, ocurrió un error del sistema.

    responseContext.functionError

    Mensaje de error de la invocación.

    responsePayload

    Carga útil original devuelta por la ejecución de la función.

    Cuando se usa EventBridge como destino de una invocación de función asíncrona, el evento tiene el siguiente formato. Para obtener más información, consulte Event Overview.

    {
        "datacontenttype": "application/json",
        "aliyunaccountid": "143xxxx",
        "data": {
            "requestContext": {
                "condition": "",
                "approximateInvokeCount": 1,
                "requestId": "0fcb7f0c-xxxx",
                "functionArn": "acs:fc:{regionid}:{accountid}:functions/xxxx"
            },
            "requestPayload": "",
            "responsePayload": "",
            "responseContext": {
                "functionError": "",
                "statusCode": 200
            },
            "timestamp": 1660120276975
        },
        "subject": "acs:fc:{regionid}:{accountid}:functions/xxxx",
        "source": "acs:fc",
        "type": "fc:AsyncInvoke:succeeded",
        "aliyunpublishtime": "2021-01-03T09:44:31.233Asia/Shanghai",
        "specversion": "1.0",
        "aliyuneventbusname": "xxxxxxx",
        "id": "ecc4865xxxxxx",
        "time": "2021-01-03T01:44:31Z",
        "aliyunregionid": "cn-shanghai-vpc",
        "aliyunpublishaddr": "199.99.xxx.xxx"
    }
  • Límites de carga útil

    Los límites máximos de carga útil para los servicios de destino compatibles son los siguientes:

    • Simple Message Queue (formerly MNS): 64 KB

    • Function Compute: sujeto a los límites descritos en Function runtime resource limits.

    • EventBridge: 64 KB

    • ApsaraMQ for RocketMQ: 4 MB

  • Evitar bucles de invocación

    Al configurar un destino para una ejecución asíncrona, evite crear un bucle de invocación. Por ejemplo, si configura la Función B como destino de las invocaciones exitosas de la Función A, y la Función A como destino de las invocaciones exitosas de la Función B. En este caso, si desencadena de forma asíncrona la Función A y se ejecuta correctamente, podría generarse un bucle de invocación de A hacia B y de regreso a A.

Configurar un servicio de destino

  1. Inicie sesión en la consola de Function Compute. En el panel de navegación izquierdo, elija Function Management > Functions.

  2. En la barra de navegación superior, seleccione una región. En la página Functions, haga clic en la función de destino.

  3. En la página de detalles de la función, haga clic en la pestaña Tasks y luego haga clic en Edit a la derecha de Modify. En el panel Task destination, establezca los siguientes parámetros. Una vez completada la configuración, haga clic en Deploy.

    • Configurar un destino para éxitos

      Establezca Invoke Other Services upon Success en Enable y luego configure el servicio de destino para las ejecuciones exitosas. Los parámetros se describen a continuación:

      Parámetro

      Descripción

      Destination Service

      Function Compute. Cuando selecciona Function Compute como servicio de destino, debe configurar los siguientes parámetros:

      • Function name: especifique el nombre de la función de destino.

      • Version or alias: especifique el alias o la versión de la función.

      Simple Message Queue (formerly MNS). Cuando selecciona Simple Message Queue (formerly MNS) como servicio de destino, debe configurar los siguientes parámetros:

      • Destination type: seleccione un tipo de destino. Valores válidos:

        • Queue:

          En el modelo de cola, los productores envían mensajes a una cola y los consumidores extraen mensajes de ella. Cada mensaje solo puede ser consumido por un consumidor, lo que hace que este modelo sea adecuado para la distribución de tareas y el procesamiento de cargas de trabajo.

        • Topic:

          En el modelo de tema, un publicador envía un mensaje a un tema y SMQ lo distribuye a todas las suscripciones activas. Cada suscripción enruta los mensajes a un endpoint especificado, como una cola. Este modelo de uno a varios es adecuado para la difusión de eventos y los patrones fan-out.

      • Queue: seleccione el nombre de la cola de Simple Message Queue (formerly MNS). Este parámetro es obligatorio si establece Queue en Queue.

      • Topic: seleccione el nombre del tema de Simple Message Queue (formerly MNS). Este parámetro es obligatorio si establece Topic en Topic.

      ApsaraMQ for RocketMQ. Si selecciona ApsaraMQ for RocketMQ como servicio de destino, debe configurar los siguientes parámetros:

      • Instance: seleccione la instancia de destino.

      • Topic: seleccione el tema de destino.

      EventBridge. Si selecciona EventBridge como servicio de destino, debe especificar un Custom event bus.

    • Configurar un destino para fallos

      Establezca Invoke Other Services upon Failure en Enable y luego configure el servicio de destino para las ejecuciones fallidas. Los parámetros son los mismos que para un destino de éxitos.

Fallos de devolución de llamada

Las devoluciones de llamada a un servicio de destino pueden fallar por permisos insuficientes o por indisponibilidad del servicio. Function Compute proporciona métricas y registros relevantes que puede utilizar para solucionar problemas. La siguiente tabla describe los errores comunes y los comportamientos correspondientes del sistema.

Código de error

Causa

Comportamiento del sistema

5xx

Limitación de velocidad o errores de contenido.

El sistema Function Compute reintenta automáticamente con retroceso exponencial. El intervalo inicial de reintento es de 500 ms y la duración máxima de reintento es de 30 minutos.

4xx

Permisos faltantes, parámetros de solicitud no válidos (por ejemplo, el recurso de destino se eliminó) o el cuerpo de la solicitud supera el límite del servicio de destino.

Devuelve un error y registra la información del error.

Métricas de devolución de llamada de resultado

Si una devolución de llamada al servicio de destino falla, Function Compute registra las métricas correspondientes en la consola. Inicie sesión en la consola de Function Compute. En el panel de navegación izquierdo, elija . Luego, en la lista Function Name, haga clic en el nombre de la función de destino para consultar sus métricas.

Nombre de la métrica

Descripción

Destination Invocation Errors (FunctionDestinationErrors)

Número de intentos fallidos para invocar el destino de una invocación de función asíncrona. La métrica se agrega por suma cada minuto o cada hora.

Destination Invocation Successes (FunctionDestinationSucceed)

Número de intentos exitosos para invocar el destino de una invocación de función asíncrona. La métrica se agrega por suma cada minuto o cada hora.

Para obtener más información sobre las métricas de monitoreo, consulte Monitoring Metrics.

Preguntas frecuentes

¿Cómo desencadenar una invocación asíncrona?

Puede usar uno de los siguientes métodos para invocar de forma asíncrona una función en Function Compute:

  • Inicie sesión en la consola de Function Compute, busque la función de destino, vaya a la pestaña Test, seleccione I want to make the call asynchronously. y luego haga clic en Test Function.

  • Llame a la API InvokeFunction y establezca el parámetro x-fc-invocation-type en Async.

  • Use Serverless Devs para configurar una invocación asíncrona. Establezca el parámetro invocation-type en Async. Para obtener más información, consulte Invoke a function.

  • Cree un disparador compatible con la invocación asíncrona para desencadenar la función de esa manera. Para obtener más información, consulte Event-driven invocations.

  • Cuando use un disparador HTTP o un dominio personalizado para una invocación, establezca el encabezado de solicitud X-Fc-Invocation-Type en Async, como se muestra en el siguiente ejemplo.

    curl -v -H "X-Fc-Invocation-Type: Async" https://example.cn-shenzhen.fcapp.run/$path
    Nota
    • Llamar a una Web Function: por ejemplo, si usa Flask y desea probar una función de Python con una ruta definida como @app.route('/test'), reemplace $path por test. Cuando pruebe una función de Python con una ruta definida como @app.route('/'), llame directamente al endpoint público del disparador HTTP.

    • Invocar una Event Function: llame directamente al endpoint público del disparador HTTP.

Pasos siguientes

Para rastrear el estado de una solicitud asíncrona en cada etapa, habilite Task Mode. Para obtener más información, consulte Asynchronous tasks.