Todos os produtos
Search
Central de documentação

Function Compute:Tarefas assíncronas

Última atualização: Jun 29, 2026

Ao invocar uma função de forma assíncrona, não há mecanismo nativo para rastrear se a execução foi bem-sucedida, falhou ou ainda está em andamento. O modo de tarefa assíncrona resolve essa questão registrando cada transição de estado de todas as invocações — do enfileiramento à conclusão ou falha — e disponibilizando esses registros para consultas e gerenciamento em tempo real.

Com o modo de tarefa ativado, é possível:

  • Consultar o status atual de qualquer tarefa em qualquer ponto do ciclo de vida.

  • Parar uma tarefa específica em execução pelo id.

  • Evitar execuções duplicadas atribuindo um id de tarefa exclusivo a cada invocação.

  • Monitorar a profundidade da fila, a latência de processamento e o uso de recursos no nível da instância.

  • Coordenar tarefas em fluxos de trabalho de grande escala com o CloudFlow.

O modo de tarefa adiciona latência mínima às invocações e execuções. Essa latência não é cobrada. Para detalhes sobre faturamento, consulte Visão geral do faturamento.

Como funciona o modo de tarefa

Quando o modo de tarefa está ativado, o Function Compute registra cada transição de estado para toda invocação assíncrona. Após o envio de uma tarefa:

  1. O Function Compute enfileira a mensagem de invocação (status: Enqueued).

  2. A mensagem sai da fila e aguarda uma instância disponível (status: Processed).

  3. Uma instância assume a tarefa e a executa (status: Running).

  4. A tarefa transita para um estado final: Succeeded, Failed, Stopped, Expired ou Invalid.

É possível consultar o estado em qualquer etapa pelo console, pela API ou pelo Serverless Devs.

Limitações

Sensibilidade à latência: Desative o modo de tarefa se sua aplicação exigir latência média de ponta a ponta inferior a 100 ms.

Throughput: Desative o modo de tarefa se precisar invocar funções assincronamente a milhares de solicitações por segundo (RPS) ou mais.

Período de retenção: Os registros de tarefas ficam disponíveis para consulta por 7 dias após a criação.

Regiões suportadas: China (Hangzhou), China (Shanghai), China (Qingdao), China (Beijing), China (Zhangjiakou), China (Ulanqab), China (Shenzhen), China (Chengdu), China (Hong Kong), Singapura, Reino Unido (Londres), EUA (Vale do Silício), EUA (Virgínia), Alemanha (Frankfurt), Malásia (Kuala Lumpur), Indonésia (Jacarta), Tailândia (Bangkok), Japão (Tóquio) e Coreia do Sul (Seul).

Status das tarefas

O Function Compute rastreia os seguintes status para cada tarefa assíncrona:

Status

Descrição

Enqueued

A mensagem de invocação está enfileirada e aguardando processamento.

Processed

A mensagem saiu da fila e a tarefa aguarda invocação.

Running

A tarefa está em execução em uma instância.

Succeeded

A tarefa foi concluída com êxito.

Failed

A tarefa falhou.

Stopped

A tarefa foi parada manualmente.

Stopping

O sistema está processando uma solicitação de parada.

Expired

O tempo de vida (TTL) da mensagem expirou antes do processamento da tarefa; a mensagem foi descartada.

Invalid

Não foi possível executar a tarefa — por exemplo, porque a função foi excluída.

Retrying

A tarefa está em nova tentativa após um erro de execução. O status muda para Running assim que a nova tentativa começa.

Para obter o status atual de uma tarefa específica, chame GetAsyncTask. Para filtrar tarefas por status ou outras condições, chame ListAsyncTasks.

Comparação com jobs do Kubernetes

Para executar tarefas assíncronas, utilize o recurso de tarefas assíncronas do Function Compute ou jobs do Kubernetes. A tabela a seguir compara as duas abordagens.

Recurso

Tarefas do Function Compute

Jobs do Kubernetes

Casos de uso

Adequado tanto para tarefas em tempo real com duração de dezenas de milissegundos quanto para tarefas offline com duração de dezenas de horas.

Indicado para tarefas offline com carga de trabalho fixa e baixos requisitos de velocidade de envio e desempenho em tempo real.

Observabilidade da tarefa

Suportada. Oferece observabilidade abrangente, incluindo logs, métricas como contagem de tarefas enfileiradas, duração do caminho da tarefa e consultas de status da tarefa.

Requer integração manual de software open source.

Dimensionamento automático de instâncias de tarefa

Suportado. Dimensiona instâncias automaticamente com base no número de tarefas enfileiradas e na utilização de recursos.

Exige implementação manual de dimensionamento e balanceamento de carga com uma fila de tarefas, o que aumenta a complexidade.

Velocidade de dimensionamento de instâncias

Nível de milissegundos.

Nível de minutos.

Utilização de recursos da instância

Selecione um tipo de instância apropriado. As instâncias são dimensionadas automaticamente; a cobrança é baseada na duração real do processamento da tarefa, resultando em alta utilização de recursos.

É necessário especificar o tipo e a quantidade de instâncias ao enviar um job. O dimensionamento automático e o balanceamento de carga são difíceis de implementar, levando a uma baixa utilização de recursos.

Throughput de envio de tarefas

Um único usuário pode enviar dezenas de milhares de tarefas por segundo.

Um cluster pode iniciar no máximo algumas centenas de jobs por segundo.

Envio agendado ou atrasado

Suporta envio agendado e atrasado.

Suporta envio agendado, mas não suporta envio atrasado.

Deduplicação de tarefas

Suportada.

Não suportada.

Pausar ou retomar a execução da tarefa

Suportado.

Suportado apenas no Kubernetes 1.21 e versões posteriores.

Encerrar uma tarefa específica

Suportado.

Suporte limitado. As tarefas são encerradas indiretamente ao parar as instâncias da tarefa.

Limitação de taxa de tarefas

Suportada. A limitação pode ser configurada no nível do usuário ou da função.

Não suportada.

Callbacks automáticos de resultado

Suportados.

Não suportados.

Custos de desenvolvimento e O&M

Basta implementar a lógica de processamento da tarefa.

Requer a manutenção de um cluster Kubernetes.

Ativar o modo de tarefa

Ativar o modo de tarefa ao criar uma função

  1. Faça login no console do Function Compute. No painel de navegação à esquerda, escolha Function Management > Function.

  2. Na barra de navegação superior, selecione uma região. Na página Function, clique em Create Function.

  3. Na caixa de diálogo, selecione Task Function e clique em Create. Defina o nome da função e clique em Create.

  4. Após a criação da função, acesse a página de detalhes da função e clique na aba Tasks. O modo de tarefa é ativado por padrão.

Para detalhes de configuração, consulte Criar uma função de tarefa.

Ativar o modo de tarefa em uma função existente

Antes de começar, certifique-se de ter criado uma função. Consulte Criar uma função.

  1. Faça login no console do Function Compute. No painel de navegação à esquerda, clique em Functions.

  2. Na barra de navegação superior, selecione uma região. Na página Functions, clique na função desejada.

  3. Na página de detalhes da função, clique na aba Tasks e, em seguida, clique em Modify ao lado de Task Mode.

  4. No painel Task Mode, defina Task Mode como Enable e clique em Deploy.

Ativar o modo de tarefa via API

Chame PutFunctionAsyncInvokeConfig com asyncTask definido como true. Todas as invocações assíncronas subsequentes para a função usarão o modo de tarefa.

{
  "asyncTask": true
}
Nota

Ativar o modo de tarefa não afeta as invocações síncronas. O modo de tarefa aplica-se apenas a invocações assíncronas.

Enviar uma tarefa

Enviar uma tarefa pelo console

  1. Faça login no console do Function Compute. No painel de navegação à esquerda, clique em Functions.

  2. Na barra de navegação superior, selecione uma região. Na página Functions, clique na função desejada.

  3. Na página de detalhes da função, clique na aba Tasks e, em seguida, clique em Submit Task.

  4. Na caixa de diálogo, selecione um método de geração de id de tarefa e especifique o horário de execução; depois, clique em OK.

Para passar parâmetros de teste antes do envio, clique no ícone de seta ao lado de Submit Task e selecione Configure Test Parameters. Para funções de evento, os parâmetros são passados como um payload de evento. Para funções HTTP, os parâmetros são passados como parâmetros HTTP.

Após o envio, a lista de tarefas exibe Task Status, Task ID e Instance ID.

Enviar uma tarefa via API

Chame InvokeFunction com o cabeçalho x-fc-invocation-type definido como Async. Para atribuir um id de tarefa personalizado para deduplicação, inclua o cabeçalho x-fc-async-task-id.

Exemplo: enviar uma tarefa e consultar seu status

O exemplo a seguir mostra o ciclo de vida completo de envio de uma tarefa assíncrona e consulta do seu status até a conclusão.

  1. Ative o modo de tarefa na função (configuração única):

    PUT /2023-03-30/functions/{functionName}/async-invoke-config
    Content-Type: application/json
    
    {
      "asyncTask": true
    }
  2. Envie a tarefa com um id de tarefa personalizado:

    POST /2023-03-30/functions/{functionName}/invocations
    x-fc-invocation-type: Async
    x-fc-async-task-id: my-task-001
  3. Consulte o status da tarefa usando o id da tarefa:

    GET /2023-03-30/functions/{functionName}/async-tasks/my-task-001

    A resposta inclui o status atual (Enqueued, Running, Succeeded, etc.). Consulte este endpoint repetidamente até que o status atinja um estado final.

Para um exemplo de código executável que define um id de tarefa durante a invocação, consulte Exemplo de InvokeFunction (site internacional).

Parar uma tarefa

Parar uma tarefa pelo console

Na aba Tasks da página de detalhes da função, localize a tarefa na lista de tarefas e pare-a.

Parar uma tarefa via API

Chame StopAsyncTask com o TaskID da tarefa. Para encontrar o TaskID, chame ListAsyncTasks.

Deduplicação de tarefas

O Function Compute usa um TaskID globalmente exclusivo para evitar execuções duplicadas. Se um envio falhar — por exemplo, devido a um timeout — tente novamente com o mesmo TaskID. O Function Compute rejeita envios duplicados com um erro 409.

Atribua um TaskID a cada tarefa incluindo o cabeçalho x-fc-async-task-id na solicitação de invocação. Use esse id ao tentar reenviar submissões que falharam.

Nota

Se você definir RequestID sem definir TaskID, o Function Compute definirá automaticamente TaskID como RequestID. Defina TaskID diretamente e deixe RequestID indefinido.

Acionar tarefas com gatilhos de evento

Os seguintes gatilhos suportam invocação assíncrona e podem acionar tarefas assíncronas:

Importante

Defina Invocation Method como Async Invocation para gatilhos HTTP e gatilhos integrados ao EventBridge.

Monitorar tarefas

Utilize as métricas de monitoramento do Function Compute para rastrear a profundidade da fila de tarefas, detectar erros e responder a timeouts em tempo real.

Visualizar métricas

Antes de começar, certifique-se de ter criado uma função. Consulte Criar uma função.

  1. Faça login no console do Function Compute. No painel de navegação à esquerda, clique em Functions.

  2. Na barra de navegação superior, selecione uma região. Na página Function, clique na função desejada.

  3. Na página de detalhes da função, clique na aba Monitoring.

    • Clique em Function Metrics para visualizar métricas de invocação assíncrona: Asynchronous Invocation Processing (count), Asynchronous Invocation Processing Latency (ms), Asynchronous Invocation Trigger Events (count) e Asynchronous Requests Backlogs (count).

    • Clique em Instance Metrics para visualizar o uso de recursos no nível da instância para instâncias de tarefas assíncronas.

Nota

As métricas no nível da instância exigem que o recurso de log esteja ativado. Consulte Configurar logging.

Para obter a lista completa de métricas de monitoramento, consulte Métricas de monitoramento.

Definir regras de alerta

Para definir um alerta em uma métrica, clique no ícone de sino no canto superior direito do gráfico da métrica. Configure as condições de alerta e o limiar no painel Create Metric-based Alert Rule e clique em OK.

Exemplo: enviar um alerta de severidade média quando as invocações assíncronas acumuladas atingirem 5 ou mais, entregue 24 horas por dia, 7 dias por semana via DingTalk, e-mail, telefone e webhook.

Orquestrar tarefas com o CloudFlow

Integre o Function Compute ao CloudFlow para coordenar tarefas assíncronas em fluxos de trabalho de grande escala. O CloudFlow rastreia as transições de estado de cada tarefa, aplica sua lógica de nova tentativa e garante a execução confiável de etapas predefinidas. Os estados do CloudFlow suportados incluem Pass, Map e Parallel.

Para detalhes de integração, consulte Integrar com o Function Compute.

Pré-requisitos

Antes de começar, certifique-se de ter:

Criar e executar um fluxo de trabalho

  1. Faça login no console do CloudFlow. Na barra de navegação superior, selecione uma região.

  2. No painel de navegação à esquerda, clique em Workflows. Na página Workflows, clique em Create Workflow.

  3. Na caixa de diálogo Create Workflow, selecione um método de criação e modo de fluxo de trabalho. O CloudFlow suporta dois modos: Standard e Express. Consulte Fluxos de trabalho Standard e Express e Criar um fluxo de trabalho a partir de um modelo em branco para obter detalhes.

  4. Defina o fluxo de trabalho. No canto superior direito da página de detalhes do fluxo, clique em YAML. Insira a definição do fluxo no editor de código e clique em Save. O exemplo a seguir invoca uma função do Function Compute assincronamente e aguarda sua conclusão antes que o fluxo de trabalho termine (TaskMode: RequestComplete):

    Type: StateMachine
    Name: MyFlow
    SpecVersion: v1
    StartAt: InvokeFunction
    States:
      - Type: Task
        Name: InvokeFunction
        Action: FC:InvokeFunction
        TaskMode: RequestComplete
        Parameters:
          invocationType: Async
          resourceArn: acs:fc:us-west-1:103435468****:functions/func-i1****/LATEST
        End: true
  5. Configure a função de execução. No canto superior direito, clique em Configure Workflow. Selecione uma Execution Role e clique em Save.

    Nota

    A função deve estar vinculada à política AliyunFCInvocationAccess.

  6. Na página de detalhes do fluxo, clique em Execute para testar o fluxo de trabalho.

Próximos passos