CEVIU Logo
Voltar

Dimensionando com Airflow 3.2: Quando Postergar e Quando Usar Operadores Assíncronos Nativos

Aprofundamento CEVIU

Aprofundamento

O Airflow 3.2 não é só mais uma atualização incremental: ele resolve um gargalo antigo de arquitetura, a pressão no triggerer e no banco de metadados, ao trazer execução assíncrona nativa para o PythonOperator, sem exigir que o usuário gerencie event loops ou migre para operadores deferíveis. Isso muda o jogo para pipelines de micro-batch com centenas ou milhares de chamadas concorrentes (APIs, SFTP, webhooks), onde antes cada tarefa consumia um slot completo de worker e passava pelo ciclo completo de agendamento/triggerer/execução. Agora, dentro de um único slot, múltiplas operações de I/O podem rodar em paralelo sob o mesmo event loop, reduzindo drasticamente latência e uso de recursos. A combinação com Dynamic Task Mapping, estável desde a versão 2.3, permite que essa concorrência seja orquestrada dinamicamente, com base em dados reais do runtime, sem pré-definição estática de tarefas.

Essa mudança não é só técnica: ela desloca o custo de escalabilidade do lado da infraestrutura (mais workers, mais triggerers) para o lado da lógica de código, onde os engenheiros de dados já operam. O suporte a asset partitions, também novo na 3.2, complementa isso ao permitir respostas granulares a eventos de dados, não apenas a gatilhos temporais. Juntos, os dois recursos sinalizam uma virada clara: o Airflow está migrando de uma ferramenta de agendamento cronológico para um sistema de reação a eventos de dados, com controle preciso de dependências entre ativos.

Por que isso importa

Para times que rodam pipelines com alta frequência de I/O, como ingestão de APIs externas, sincronização de sistemas legados ou processamento de lotes pequenos mas numerosos, o ganho não é marginal. Testes internos da Astronomer com carga de 5.000 requisições HTTP mostraram redução de 78% no tempo total de execução e queda de 92% na carga no banco de metadados, comparado à abordagem com operadores deferíveis. Isso significa menos instâncias de triggerer, menor custo operacional e maior previsibilidade no SLA de DAGs críticos. Além disso, eliminar a dependência do triggerer simplifica a implantação, especialmente em ambientes com restrições de rede ou compliance rigoroso, onde expor o componente triggerer era um ponto fraco de segurança.

Linha do tempo

  1. Lançamento do Airflow 3.0, com arquitetura distribuída e execução remota de tarefas

  2. Lançamento do Airflow 3.1, com suporte a human-in-the-loop e execução síncrona de DAG

  3. Disponibilização da versão beta 3.2.0beta2 com suporte assíncrono nativo no PythonOperator

  4. Lançamento oficial do Airflow 3.2 com AIP-98 implementado

  5. Publicação da análise técnica sobre dimensionamento com Airflow 3.2 e uso de operadores assíncronos

Perguntas frequentes

Qual é a diferença prática entre usar PythonOperator assíncrono e um operador deferível?

O operador deferível transfere a execução para o triggerer, que fica responsável por pollear o estado até a conclusão, gerando sobrecarga no banco de dados e no próprio triggerer. Já o PythonOperator assíncrono executa tudo no worker, com concorrência real dentro do mesmo slot, sem intermediários. Não há roundtrip nem dependência do triggerer.

Preciso reescrever meus DAGs para usar o novo PythonOperator assíncrono?

Sim, mas de forma controlada. Você precisa substituir funções síncronas por funções assíncronas (com async/await) e usar o novo parâmetro `python_callable_async=True`. Operadores existentes continuam funcionando normalmente, a mudança é opt-in, não forçada.

Dynamic Task Mapping com assincronia funciona em todos os executores?

Funciona nos executores Celery, Kubernetes e Process. Não funciona no SequentialExecutor (destinado a desenvolvimento local) nem no LocalExecutor com configuração padrão, pois ambos não suportam execução concorrente de tarefas no mesmo processo.

Posso misturar tarefas assíncronas e síncronas no mesmo DAG?

Sim. O Airflow 3.2 trata cada tarefa de forma isolada. Um DAG pode ter operadores assíncronos, deferíveis e síncronos convencionais lado a lado, desde que os requisitos de executor e configuração sejam atendidos.

Fontes

Avalie este artigo:
Compartilhar:
Categoria
CEVIU Dados
Publicado
12 de março de 2026
Editoria
CEVIU Dados

Quer receber mais sobre CEVIU Dados?

Conteúdo curado diariamente, direto no seu e-mail.

Conteúdo curado diariamenteDiversas categoriasCancele quando quiser