<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/apache-airflow-3-2-0-data-aware-workflows-at-scale-ilba3biwx" -->

---
title: Apache Airflow 3.2.0: Data-Aware Workflows at Scale
description: Apache Airflow 3.2.0 is released with four major additions. Asset partitioning (AIP-76) enables partition-driven scheduling so downstream DAGs only trigger...
canonical: https://daily.dev/posts/apache-airflow-3-2-0-data-aware-workflows-at-scale-ilba3biwx
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Apache Airflow 3.2.0: Data-Aware Workflows at Scale | daily.dev
og:description: Apache Airflow 3.2.0 is released with four major additions. Asset partitioning (AIP-76) enables partition-driven scheduling so downstream DAGs only trigger...
og:url: https://daily.dev/posts/apache-airflow-3-2-0-data-aware-workflows-at-scale-ilba3biwx
og:image: https://api.daily.dev/og/posts/ILba3BIwx.png
og:image:alt: Apache Airflow 3.2.0: Data-Aware Workflows at Scale
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Apache Airflow 3.2.0: Data-Aware Workflows at Scale

**[Apache Airflow](https://daily.dev/sources/airflow)** · 9 min read · 17 upvotes · 1 comments

## Summary

Apache Airflow 3.2.0 is released with four major additions. Asset partitioning (AIP-76) enables partition-driven scheduling so downstream DAGs only trigger when specific data partitions are updated, with support for CronPartitionTimetable, backfill for partitioned DAGs, and multi-asset partition mappers. Multi-team deployments (AIP-67, experimental) allow organizations to run isolated teams within a single Airflow instance, each with their own DAGs, connections, variables, pools, and executors. Deadline Alerts now support synchronous callbacks via SyncCallback, executing directly on workers. Additional improvements include PythonOperator async callable support, ~42x faster rendered task instance field cleanup, scheduler memory optimizations, Task SDK decoupling progress, and numerous UI enhancements including XCom management, HITL approval history, and custom theme support.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://airflow.apache.org/blog/airflow-3.2.0>

## Questions this post answers

### What does asset partitioning in Airflow 3.2 do differently from previous asset-based scheduling?

Asset partitioning, introduced under AIP-76, lets downstream DAGs trigger only when the specific data partition they depend on is updated, instead of firing on every change to an upstream asset. It supports partition-driven scheduling, a CronPartitionTimetable, backfill for partitioned DAGs without re-triggering everything downstream, and multi-asset partitions where a DAG waits for several sources to align on the same partition key.

_Teams tuning partition-driven pipelines can track Airflow scheduling changes like this one on daily.dev._

### How do synchronous deadline alert callbacks work in Airflow 3.2 compared to Airflow 3.1?

In Airflow 3.1, deadline alert callbacks only ran asynchronously through the triggerer, limiting integration options. Airflow 3.2 adds SyncCallback support, which executes directly on the worker via the executor, with an optional executor parameter to target a specific one, and also allows configuring multiple deadline alert thresholds on a single DAG.

_Ops teams weighing async versus sync alerting can follow orchestration updates like this via daily.dev._

### What performance improvements does Airflow 3.2 make to the rendered task instance fields cleanup job?

The cleanup job for rendered task instance fields was rewritten to be roughly 42 times faster for DAGs with many mapped tasks, changing retention to be based on the N most recent DAG runs rather than N most recent task executions. The related config was renamed from max_num_rendered_ti_fields_per_task to num_dag_runs_to_retain_rendered_fields, with the old name still working but emitting a deprecation warning.

_Anyone scaling large mapped-task DAGs can keep up with performance fixes like this through daily.dev._

## Community discussion

Top comments from developers on daily.dev.

**@pdfopsdev** · 2 upvotes

> Asset partitioning is the one that changes day-to-day work — before this you'd fake partition-awareness with custom sensors or a poke loop checking which slice had landed, and downstream DAGs re-ran wholesale. Partition-driven scheduling means a late-arriving 2026-07-08 slice only retriggers the DAGs bound to that partition instead of the whole graph. Curious how the multi-asset partition mappers handle mismatched granularity — a daily upstream feeding an hourly downstream, say — since that's where the custom-sensor approach always got ugly.

## Similar posts on daily.dev

- [Amazon MWAA now supports Apache Airflow 3.2](https://daily.dev/posts/amazon-mwaa-now-supports-apache-airflow-3-2-1bn64j0je) · AWS · 0 upvotes · 0 comments
- [Apache Airflow 3.3.0: Stateful Tasks and Multi-Language Support](https://daily.dev/posts/apache-airflow-3-3-0-stateful-tasks-and-multi-language-support-ztlnez2ei) · Apache Airflow · 0 upvotes · 0 comments
- [Airflow 3.3: What is new, What changed and What engineers need to know.](https://daily.dev/posts/airflow-3-3-what-is-new-what-changed-and-what-engineers-need-to-know--o0mjhnqlk) · Medium · 0 upvotes · 0 comments
- [Managed Apache Airflow: Scaling Data & AI Workloads](https://daily.dev/posts/managed-apache-airflow-scaling-data-ai-workloads-1s4kat53h) · Google Cloud · 0 upvotes · 0 comments
- [Cloud Composer supports Apache Airflow 3.1](https://daily.dev/posts/cloud-composer-supports-apache-airflow-3-1-tfxltyyoe) · Google Cloud · 1 upvotes · 0 comments

---

Tags: [#python](https://daily.dev/tags/python), [#devops](https://daily.dev/tags/devops), [#workflow-orchestration](https://daily.dev/tags/workflow-orchestration), [#apache-airflow](https://daily.dev/tags/apache-airflow)

[View this post on daily.dev](https://daily.dev/posts/apache-airflow-3-2-0-data-aware-workflows-at-scale-ilba3biwx)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Apache Airflow 3.2.0: Data-Aware Workflows at Scale","url":"https://daily.dev/posts/apache-airflow-3-2-0-data-aware-workflows-at-scale-ilba3biwx","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/apache-airflow-3-2-0-data-aware-workflows-at-scale-ilba3biwx"},"datePublished":"2026-07-09T07:50:05.418Z","dateModified":"2026-09-14T07:12:14.438Z","description":"Apache Airflow 3.2.0 is released with four major additions. Asset partitioning (AIP-76) enables partition-driven scheduling so downstream DAGs only trigger...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/9b284fcbe3e48ed9e2345226d66513f6?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/9b284fcbe3e48ed9e2345226d66513f6?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Apache Airflow","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Apache Airflow","logo":"https://media.daily.dev/image/upload/s--Dqa6irgE--/f_auto/v1752573492/logos/airflow","url":"https://daily.dev/sources/airflow"},"commentCount":1,"discussionUrl":"https://daily.dev/posts/apache-airflow-3-2-0-data-aware-workflows-at-scale-ilba3biwx","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":17},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":1}],"keywords":"python,devops,workflow-orchestration,apache-airflow","timeRequired":"PT9M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Apache Airflow","item":"https://daily.dev/sources/airflow"},{"@type":"ListItem","position":3,"name":"Apache Airflow 3.2.0: Data-Aware Workflows at Scale"}]}
{"@context":"https://schema.org","@type":"WebPage","@id":"https://daily.dev/posts/apache-airflow-3-2-0-data-aware-workflows-at-scale-ilba3biwx","comment":[{"@type":"Comment","text":"Asset partitioning is the one that changes day-to-day work — before this you’d fake partition-awareness with custom sensors or a poke loop checking which slice had landed, and downstream DAGs re-ran wholesale. Partition-driven scheduling means a late-arriving 2026-07-08 slice only retriggers the DAGs bound to that partition instead of the whole graph. Curious how the multi-asset partition mappers handle mismatched granularity — a daily upstream feeding an hourly downstream, say — since that’s where the custom-sensor approach always got ugly.","datePublished":"2026-07-09T18:11:37.768Z","url":"https://daily.dev/posts/ILba3BIwx#c-t1A1cwf34","author":{"@type":"Person","name":"PDFops","url":"https://daily.dev/pdfopsdev","image":"https://media.daily.dev/image/upload/s---8isRBKc--/f_auto/v1782922291/avatars/avatar_orjMeK8QKaaVZwGq7ScPz?_a=BAMAMicg0"},"interactionStatistic":{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":2}}]}
{"@context":"https://schema.org","@type":"FAQPage","@id":"https://daily.dev/posts/apache-airflow-3-2-0-data-aware-workflows-at-scale-ilba3biwx#faq","mainEntity":[{"@type":"Question","name":"What does asset partitioning in Airflow 3.2 do differently from previous asset-based scheduling?","acceptedAnswer":{"@type":"Answer","text":"Asset partitioning, introduced under AIP-76, lets downstream DAGs trigger only when the specific data partition they depend on is updated, instead of firing on every change to an upstream asset. It supports partition-driven scheduling, a CronPartitionTimetable, backfill for partitioned DAGs without re-triggering everything downstream, and multi-asset partitions where a DAG waits for several sources to align on the same partition key. Teams tuning partition-driven pipelines can track Airflow scheduling changes like this one on daily.dev."}},{"@type":"Question","name":"How do synchronous deadline alert callbacks work in Airflow 3.2 compared to Airflow 3.1?","acceptedAnswer":{"@type":"Answer","text":"In Airflow 3.1, deadline alert callbacks only ran asynchronously through the triggerer, limiting integration options. Airflow 3.2 adds SyncCallback support, which executes directly on the worker via the executor, with an optional executor parameter to target a specific one, and also allows configuring multiple deadline alert thresholds on a single DAG. Ops teams weighing async versus sync alerting can follow orchestration updates like this via daily.dev."}},{"@type":"Question","name":"What performance improvements does Airflow 3.2 make to the rendered task instance fields cleanup job?","acceptedAnswer":{"@type":"Answer","text":"The cleanup job for rendered task instance fields was rewritten to be roughly 42 times faster for DAGs with many mapped tasks, changing retention to be based on the N most recent DAG runs rather than N most recent task executions. The related config was renamed from max_num_rendered_ti_fields_per_task to num_dag_runs_to_retain_rendered_fields, with the old name still working but emitting a deprecation warning. Anyone scaling large mapped-task DAGs can keep up with performance fixes like this through daily.dev."}}]}
```

