You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@airflow.apache.org by gi...@apache.org on 2026/04/07 15:49:43 UTC
(airflow-site) branch publish updated: Docs updated via refs/heads/main:b8ae6e7b4d23e2b2bb170d153d975e9f88078862
This is an automated email from the ASF dual-hosted git repository.
github-bot pushed a commit to branch publish
in repository https://gitbox.apache.org/repos/asf/airflow-site.git
The following commit(s) were added to refs/heads/publish by this push:
new d27e599d22 Docs updated via refs/heads/main:b8ae6e7b4d23e2b2bb170d153d975e9f88078862
d27e599d22 is described below
commit d27e599d2201ee89f7383a124644f2b18879bc2b
Author: GitHub Actions <ac...@users.noreply.github.com>
AuthorDate: Tue Apr 7 15:49:36 2026 +0000
Docs updated via refs/heads/main:b8ae6e7b4d23e2b2bb170d153d975e9f88078862
---
_gen/indexes/en/blog-index.json | 2 +-
_gen/indexes/en/blog-posts.json | 2 +-
announcements/index.html | 2 +-
blocktype/index.html | 2 +-
blocktype/testimonial/index.html | 2 +-
blocktype/use-case/index.html | 2 +-
blog/airflow-1.10.10/index.html | 4 +-
blog/airflow-1.10.12/index.html | 4 +-
blog/airflow-1.10.8-1.10.9/index.html | 4 +-
blog/airflow-2.10.0/index.html | 41 +--
blog/airflow-2.2.0/index.html | 4 +-
blog/airflow-2.3.0/index.html | 16 +-
blog/airflow-2.4.0/index.html | 4 +-
blog/airflow-2.5.0/index.html | 4 +-
blog/airflow-2.6.0/index.html | 4 +-
blog/airflow-2.7.0/index.html | 4 +-
blog/airflow-2.8.0/index.html | 16 +-
blog/airflow-2.9.0/index.html | 4 +-
blog/airflow-3.1.0/index.html | 54 ++--
blog/airflow-3.2.0/images/3.2.0.jpg | Bin 0 -> 1470642 bytes
blog/airflow-3.2.0/images/asset_partitioning.png | Bin 0 -> 282602 bytes
blog/{airflow-2.10.0 => airflow-3.2.0}/index.html | 336 +++++++++++++--------
blog/airflow-registry/index.html | 6 +-
blog/airflow-survey-2020/index.html | 4 +-
blog/airflow-survey-2022/index.html | 4 +-
blog/airflow-survey-2023/index.html | 4 +-
blog/airflow-survey-2024/index.html | 4 +-
blog/airflow-survey-2025/index.html | 4 +-
blog/airflow-survey/index.html | 4 +-
blog/airflow-three-point-oh-is-here/index.html | 28 +-
blog/airflow-two-point-oh-is-here/index.html | 4 +-
blog/airflow_summit_2021/index.html | 4 +-
blog/airflow_summit_2022/index.html | 4 +-
blog/airflowctl-0.1.0/index.html | 4 +-
blog/announcing-new-website/index.html | 4 +-
blog/apache-airflow-for-newcomers/index.html | 4 +-
.../index.html | 4 +-
.../index.html | 4 +-
.../index.html | 4 +-
.../index.html | 4 +-
blog/fab-oid-vulnerability/index.html | 4 +-
.../index.html | 4 +-
blog/index.html | 39 ++-
blog/index.xml | 286 +++++++++++++++---
blog/introducing_setup_teardown/index.html | 4 +-
.../index.html | 4 +-
blog/tags/airflow-summit/index.html | 2 +-
blog/tags/airflow-summit/index.xml | 2 +-
blog/tags/community/index.html | 2 +-
blog/tags/community/index.xml | 2 +-
blog/tags/development/index.html | 2 +-
blog/tags/development/index.xml | 2 +-
blog/tags/documentation/index.html | 2 +-
blog/tags/documentation/index.xml | 2 +-
blog/tags/release/index.html | 41 ++-
blog/tags/release/index.xml | 9 +-
blog/tags/rest-api/index.html | 2 +-
blog/tags/rest-api/index.xml | 2 +-
blog/tags/survey/index.html | 2 +-
blog/tags/survey/index.xml | 2 +-
blog/tags/users/index.html | 2 +-
blog/tags/users/index.xml | 2 +-
blog/tags/vulnerabilities/index.html | 2 +-
blog/tags/vulnerabilities/index.xml | 2 +-
code-of-conduct/index.html | 2 +-
community/index.html | 2 +-
community/resources/index.html | 4 +-
docs/index.html | 2 +-
ecosystem/index.html | 2 +-
index.html | 28 +-
index.xml | 7 +
meetups/index.html | 2 +-
privacy-notice/index.html | 2 +-
roadmap/index.html | 2 +-
search/index.html | 4 +-
sitemap.xml | 167 +++++-----
survey/index.html | 2 +-
tags/index.html | 6 +-
tags/index.xml | 16 +-
use-cases/adjoe/index.html | 4 +-
use-cases/adobe/index.html | 4 +-
use-cases/adyen/index.html | 4 +-
use-cases/big-fish-games/index.html | 4 +-
use-cases/business_operations/index.html | 4 +-
use-cases/dish/index.html | 4 +-
use-cases/etl_analytics/index.html | 4 +-
use-cases/experity/index.html | 4 +-
use-cases/index.html | 2 +-
use-cases/infrastructure-management/index.html | 4 +-
use-cases/mlops/index.html | 4 +-
use-cases/onefootball/index.html | 4 +-
use-cases/plarium-krasnodar/index.html | 4 +-
use-cases/seniorlink/index.html | 4 +-
use-cases/sift/index.html | 4 +-
use-cases/snapp/index.html | 4 +-
use-cases/suse/index.html | 4 +-
96 files changed, 864 insertions(+), 482 deletions(-)
diff --git a/_gen/indexes/en/blog-index.json b/_gen/indexes/en/blog-index.json
index 370d423260..fe4f67d9df 100644
--- a/_gen/indexes/en/blog-index.json
+++ b/_gen/indexes/en/blog-index.json
@@ -1 +1 @@
-{"version":"2.3.9","fields":["title","description","author","content","tags","url"],"fieldVectors":[["title/It's a \"Breeze\" to develop Apache Airflow",[0,1.636,1,1.636,2,0.556,3,0.399,4,0.502]],["description/It's a \"Breeze\" to develop Apache Airflow",[2,0.708,4,0.44,5,2.642,6,1.571,7,2.642,8,1.737,9,1.571,10,1.212,11,1.316,12,1.038,13,2.642,14,0.894,15,2.642,16,0.034]],["author/It's a \"Breeze\" to develop Apache Airflow",[11,1.605,17,1.749]],["content/It's a \"Breeze\" to develop Ap [...]
\ No newline at end of file
+{"version":"2.3.9","fields":["title","description","author","content","tags","url"],"fieldVectors":[["title/It's a \"Breeze\" to develop Apache Airflow",[0,1.538,1,1.673,2,0.585,3,0.405,4,0.507]],["description/It's a \"Breeze\" to develop Apache Airflow",[2,0.751,4,0.45,5,2.72,6,1.626,7,2.72,8,1.795,9,1.626,10,1.26,11,1.365,12,0.936,13,2.72,14,0.936,15,2.72,16,0.057]],["author/It's a \"Breeze\" to develop Apache Airflow",[11,1.632,17,1.775]],["content/It's a \"Breeze\" to develop Apache [...]
\ No newline at end of file
diff --git a/_gen/indexes/en/blog-posts.json b/_gen/indexes/en/blog-posts.json
index 08d5cf77b2..750850a7e1 100644
--- a/_gen/indexes/en/blog-posts.json
+++ b/_gen/indexes/en/blog-posts.json
@@ -1 +1 @@
-[{"content":"## The story behind the Airflow Breeze tool\nInitially, we started contributing to this fantastic open-source project [Apache Airflow] with a team of three which then grew to five. When we kicked it off a year ago, I realized pretty soon where the biggest bottlenecks and areas for improvement in terms of productivity were. Even with the help of our client, who provided us with a “homegrown” development environment it took us literally days to set it up and learn some basics. [...]
\ No newline at end of file
+[{"content":"## The story behind the Airflow Breeze tool\nInitially, we started contributing to this fantastic open-source project [Apache Airflow] with a team of three which then grew to five. When we kicked it off a year ago, I realized pretty soon where the biggest bottlenecks and areas for improvement in terms of productivity were. Even with the help of our client, who provided us with a “homegrown” development environment it took us literally days to set it up and learn some basics. [...]
\ No newline at end of file
diff --git a/announcements/index.html b/announcements/index.html
index 1fa7e7a449..3081400f69 100644
--- a/announcements/index.html
+++ b/announcements/index.html
@@ -47,7 +47,7 @@ March 14, 2026 We’ve just released Apache Airflow 2.11.2 🎉
📦 PyPI: https://pypi.org/project/apache-airflow/2.11.2/ 📚 Docs: https://airflow.apache.org/docs/apache-airflow/2.11.2/ 🛠 Release Notes: https://airflow.apache.org/docs/apache-airflow/2.11.2/release_notes.html 🐳 Docker Image: “docker pull apache/airflow:2.11.2” 🚏 Constraints: https://github.com/apache/airflow/tree/constraints-2.11.2
March 11, 2026 We’ve just released Apache Airflow 3.1.8 🎉">
<meta itemprop="datePublished" content="2020-08-08T05:30:20+05:30">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="6001">
<meta itemprop="image" content="/images/feature-image.png">
diff --git a/blocktype/index.html b/blocktype/index.html
index cc4885c596..5406022bac 100644
--- a/blocktype/index.html
+++ b/blocktype/index.html
@@ -34,7 +34,7 @@
<meta itemprop="name" content="Blocktype">
<meta itemprop="description" content="Platform created by the community to programmatically author, schedule and monitor workflows.">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="image" content="/images/feature-image.png">
diff --git a/blocktype/testimonial/index.html b/blocktype/testimonial/index.html
index 45b80e5741..081d88508c 100644
--- a/blocktype/testimonial/index.html
+++ b/blocktype/testimonial/index.html
@@ -34,7 +34,7 @@
<meta itemprop="name" content="Testimonial">
<meta itemprop="description" content="Platform created by the community to programmatically author, schedule and monitor workflows.">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="image" content="/images/feature-image.png">
diff --git a/blocktype/use-case/index.html b/blocktype/use-case/index.html
index 955d65b245..e17e368395 100644
--- a/blocktype/use-case/index.html
+++ b/blocktype/use-case/index.html
@@ -34,7 +34,7 @@
<meta itemprop="name" content="Use-Case">
<meta itemprop="description" content="Platform created by the community to programmatically author, schedule and monitor workflows.">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="image" content="/images/feature-image.png">
diff --git a/blog/airflow-1.10.10/index.html b/blog/airflow-1.10.10/index.html
index 07a8abbe9a..1692ea85d7 100644
--- a/blog/airflow-1.10.10/index.html
+++ b/blog/airflow-1.10.10/index.html
@@ -31,14 +31,14 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2020-04-09T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-04-07T20:24:10+05:30">
+ <meta property="article:modified_time" content="2026-04-07T21:16:22+05:30">
<meta property="article:tag" content="Release">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="Apache Airflow 1.10.10">
<meta itemprop="description" content="We are happy to present Apache Airflow 1.10.10">
<meta itemprop="datePublished" content="2020-04-09T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="1142">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Release">
diff --git a/blog/airflow-1.10.12/index.html b/blog/airflow-1.10.12/index.html
index 504ac169bf..034387241e 100644
--- a/blog/airflow-1.10.12/index.html
+++ b/blog/airflow-1.10.12/index.html
@@ -31,14 +31,14 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2020-08-25T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-04-07T20:24:10+05:30">
+ <meta property="article:modified_time" content="2026-04-07T21:16:22+05:30">
<meta property="article:tag" content="Release">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="Apache Airflow 1.10.12">
<meta itemprop="description" content="We are happy to present Apache Airflow 1.10.12">
<meta itemprop="datePublished" content="2020-08-25T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="910">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Release">
diff --git a/blog/airflow-1.10.8-1.10.9/index.html b/blog/airflow-1.10.8-1.10.9/index.html
index b2f6def610..6168886c2b 100644
--- a/blog/airflow-1.10.8-1.10.9/index.html
+++ b/blog/airflow-1.10.8-1.10.9/index.html
@@ -31,14 +31,14 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2020-02-23T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-04-07T20:24:10+05:30">
+ <meta property="article:modified_time" content="2026-04-07T21:16:22+05:30">
<meta property="article:tag" content="Release">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="Apache Airflow 1.10.8 & 1.10.9">
<meta itemprop="description" content="We are happy to present the new 1.10.8 and 1.10.9 releases of Apache Airflow.">
<meta itemprop="datePublished" content="2020-02-23T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="437">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Release">
diff --git a/blog/airflow-2.10.0/index.html b/blog/airflow-2.10.0/index.html
index 4d0ac26db4..4f17af887b 100644
--- a/blog/airflow-2.10.0/index.html
+++ b/blog/airflow-2.10.0/index.html
@@ -31,14 +31,14 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2024-08-08T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-04-07T20:24:10+05:30">
+ <meta property="article:modified_time" content="2026-04-07T21:16:22+05:30">
<meta property="article:tag" content="Release">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="Apache Airflow 2.10.0 is here">
<meta itemprop="description" content="Apache Airflow 2.10.0 is a game-changer, with powerful Dataset improvements and the groundbreaking Hybrid Executor, set to redefine your workflow capabilities!">
<meta itemprop="datePublished" content="2024-08-08T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="1040">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Release">
@@ -734,19 +734,19 @@ executor = 'LocalExecutor,KubernetesExecutor,my.custom.module.ExecutorClass:
</div>
- <span class="bodytext__medium--brownish-grey box-event__blogpost--date">Thu, Sep 25, 2025</span>
+ <span class="bodytext__medium--brownish-grey box-event__blogpost--date">Tue, Apr 7, 2026</span>
</div>
<p class="box-event__blogpost--header">
- <a href="/blog/airflow-3.1.0/">
- Apache Airflow 3.1.0: Human-Centered Workflows
+ <a href="/blog/airflow-3.2.0/">
+ Apache Airflow 3.2.0: Data-Aware Workflows at Scale
</a>
</p>
- <p class="box-event__blogpost--author">Kaxil Naik</p>
+ <p class="box-event__blogpost--author">Rahul Vats</p>
- <p class="box-event__blogpost--description">Apache Airflow 3.1.0 introduces Human-in-the-Loop workflows, 17-language internationalization, deadline alerts, and React plugin system for data orchestration teams.</p>
+ <p class="box-event__blogpost--description">Apache Airflow 3.2.0 introduces Asset partitioning for granular pipeline orchestration, multi-team deployments for enterprise scale, synchronous deadline alert callbacks, and continued progress toward full Task SDK separation.</p>
<div class="mt-auto">
- <a href="/blog/airflow-3.1.0/">
+ <a href="/blog/airflow-3.2.0/">
<button class="btn-hollow btn-blue bodytext__medium--cerulean-blue" >Read more</button>
@@ -771,32 +771,19 @@ executor = 'LocalExecutor,KubernetesExecutor,my.custom.module.ExecutorClass:
</div>
- <span class="bodytext__medium--brownish-grey box-event__blogpost--date">Tue, Apr 22, 2025</span>
+ <span class="bodytext__medium--brownish-grey box-event__blogpost--date">Thu, Sep 25, 2025</span>
</div>
<p class="box-event__blogpost--header">
- <a href="/blog/airflow-three-point-oh-is-here/">
- Apache Airflow® 3 is Generally Available!
+ <a href="/blog/airflow-3.1.0/">
+ Apache Airflow 3.1.0: Human-Centered Workflows
</a>
</p>
- <p class="box-event__blogpost--author">
-
-
-
- <a href="https://linkedin.com/in/kaxil" target="_blank" rel="noopener">Kaxil Naik</a>
-
- ,
-
-
- <a href="https://linkedin.com/in/vikramkoka" target="_blank" rel="noopener">Vikram Koka</a>
-
-
-
- </p>
+ <p class="box-event__blogpost--author">Kaxil Naik</p>
- <p class="box-event__blogpost--description">We're proud to announce that Apache Airflow 3.0.0 has been released.</p>
+ <p class="box-event__blogpost--description">Apache Airflow 3.1.0 introduces Human-in-the-Loop workflows, 17-language internationalization, deadline alerts, and React plugin system for data orchestration teams.</p>
<div class="mt-auto">
- <a href="/blog/airflow-three-point-oh-is-here/">
+ <a href="/blog/airflow-3.1.0/">
<button class="btn-hollow btn-blue bodytext__medium--cerulean-blue" >Read more</button>
diff --git a/blog/airflow-2.2.0/index.html b/blog/airflow-2.2.0/index.html
index 32bce383af..d8df9985c4 100644
--- a/blog/airflow-2.2.0/index.html
+++ b/blog/airflow-2.2.0/index.html
@@ -31,14 +31,14 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2021-10-11T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-04-07T20:24:10+05:30">
+ <meta property="article:modified_time" content="2026-04-07T21:16:22+05:30">
<meta property="article:tag" content="Release">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="What's new in Apache Airflow 2.2.0">
<meta itemprop="description" content="We're proud to announce that Apache Airflow 2.2.0 has been released.">
<meta itemprop="datePublished" content="2021-10-11T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="658">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Release">
diff --git a/blog/airflow-2.3.0/index.html b/blog/airflow-2.3.0/index.html
index 9991526849..87883531d0 100644
--- a/blog/airflow-2.3.0/index.html
+++ b/blog/airflow-2.3.0/index.html
@@ -31,14 +31,14 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2022-04-30T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-04-07T20:24:10+05:30">
+ <meta property="article:modified_time" content="2026-04-07T21:16:22+05:30">
<meta property="article:tag" content="Release">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="Apache Airflow 2.3.0 is here">
<meta itemprop="description" content="We're proud to announce that Apache Airflow 2.3.0 has been released.">
<meta itemprop="datePublished" content="2022-04-30T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="708">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Release">
@@ -749,19 +749,19 @@ Sade’s “Smooth Operator”. Enjoy!</li>
</div>
- <span class="bodytext__medium--brownish-grey box-event__blogpost--date">Thu, Sep 25, 2025</span>
+ <span class="bodytext__medium--brownish-grey box-event__blogpost--date">Tue, Apr 7, 2026</span>
</div>
<p class="box-event__blogpost--header">
- <a href="/blog/airflow-3.1.0/">
- Apache Airflow 3.1.0: Human-Centered Workflows
+ <a href="/blog/airflow-3.2.0/">
+ Apache Airflow 3.2.0: Data-Aware Workflows at Scale
</a>
</p>
- <p class="box-event__blogpost--author">Kaxil Naik</p>
+ <p class="box-event__blogpost--author">Rahul Vats</p>
- <p class="box-event__blogpost--description">Apache Airflow 3.1.0 introduces Human-in-the-Loop workflows, 17-language internationalization, deadline alerts, and React plugin system for data orchestration teams.</p>
+ <p class="box-event__blogpost--description">Apache Airflow 3.2.0 introduces Asset partitioning for granular pipeline orchestration, multi-team deployments for enterprise scale, synchronous deadline alert callbacks, and continued progress toward full Task SDK separation.</p>
<div class="mt-auto">
- <a href="/blog/airflow-3.1.0/">
+ <a href="/blog/airflow-3.2.0/">
<button class="btn-hollow btn-blue bodytext__medium--cerulean-blue" >Read more</button>
diff --git a/blog/airflow-2.4.0/index.html b/blog/airflow-2.4.0/index.html
index 1b9a502522..b04b78eeca 100644
--- a/blog/airflow-2.4.0/index.html
+++ b/blog/airflow-2.4.0/index.html
@@ -31,14 +31,14 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2022-09-19T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-04-07T20:24:10+05:30">
+ <meta property="article:modified_time" content="2026-04-07T21:16:22+05:30">
<meta property="article:tag" content="Release">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="Apache Airflow 2.4.0: That Data Aware Release">
<meta itemprop="description" content="We're proud to announce that Apache Airflow 2.4.0 has been released with many exciting improvements.">
<meta itemprop="datePublished" content="2022-09-19T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="849">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Release">
diff --git a/blog/airflow-2.5.0/index.html b/blog/airflow-2.5.0/index.html
index bf7d8e8d18..1ef6aae37d 100644
--- a/blog/airflow-2.5.0/index.html
+++ b/blog/airflow-2.5.0/index.html
@@ -31,14 +31,14 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2022-12-02T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-04-07T20:24:10+05:30">
+ <meta property="article:modified_time" content="2026-04-07T21:16:22+05:30">
<meta property="article:tag" content="Release">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="Apache Airflow 2.5.0: Tick-Tock">
<meta itemprop="description" content="We're proud to announce that Apache Airflow 2.5.0 has been released with many quality of life changes.">
<meta itemprop="datePublished" content="2022-12-02T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="391">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Release">
diff --git a/blog/airflow-2.6.0/index.html b/blog/airflow-2.6.0/index.html
index ecbc407740..62f3c60b91 100644
--- a/blog/airflow-2.6.0/index.html
+++ b/blog/airflow-2.6.0/index.html
@@ -31,14 +31,14 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2023-04-30T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-04-07T20:24:10+05:30">
+ <meta property="article:modified_time" content="2026-04-07T21:16:22+05:30">
<meta property="article:tag" content="Release">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="what's new in Apache Airflow 2.6.0">
<meta itemprop="description" content="Apache Airflow 2.6.0 has been released!">
<meta itemprop="datePublished" content="2023-04-30T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="535">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Release">
diff --git a/blog/airflow-2.7.0/index.html b/blog/airflow-2.7.0/index.html
index 8ead37190a..33daf7d62d 100644
--- a/blog/airflow-2.7.0/index.html
+++ b/blog/airflow-2.7.0/index.html
@@ -31,14 +31,14 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2023-08-18T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-04-07T20:24:10+05:30">
+ <meta property="article:modified_time" content="2026-04-07T21:16:22+05:30">
<meta property="article:tag" content="Release">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="Apache Airflow 2.7.0 is here">
<meta itemprop="description" content="Apache Airflow 2.7.0 has been released!">
<meta itemprop="datePublished" content="2023-08-18T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="816">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Release">
diff --git a/blog/airflow-2.8.0/index.html b/blog/airflow-2.8.0/index.html
index b577780684..3898380d56 100644
--- a/blog/airflow-2.8.0/index.html
+++ b/blog/airflow-2.8.0/index.html
@@ -31,14 +31,14 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2023-12-15T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-04-07T20:24:10+05:30">
+ <meta property="article:modified_time" content="2026-04-07T21:16:22+05:30">
<meta property="article:tag" content="Release">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="Apache Airflow 2.8.0 is here">
<meta itemprop="description" content="Introducing Apache Airflow 2.8.0: Enhanced with New Features and Significant Improvements">
<meta itemprop="datePublished" content="2023-12-15T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="730">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Release">
@@ -728,19 +728,19 @@ We care for your security, and “secure by default” is one of the thi
</div>
- <span class="bodytext__medium--brownish-grey box-event__blogpost--date">Thu, Sep 25, 2025</span>
+ <span class="bodytext__medium--brownish-grey box-event__blogpost--date">Tue, Apr 7, 2026</span>
</div>
<p class="box-event__blogpost--header">
- <a href="/blog/airflow-3.1.0/">
- Apache Airflow 3.1.0: Human-Centered Workflows
+ <a href="/blog/airflow-3.2.0/">
+ Apache Airflow 3.2.0: Data-Aware Workflows at Scale
</a>
</p>
- <p class="box-event__blogpost--author">Kaxil Naik</p>
+ <p class="box-event__blogpost--author">Rahul Vats</p>
- <p class="box-event__blogpost--description">Apache Airflow 3.1.0 introduces Human-in-the-Loop workflows, 17-language internationalization, deadline alerts, and React plugin system for data orchestration teams.</p>
+ <p class="box-event__blogpost--description">Apache Airflow 3.2.0 introduces Asset partitioning for granular pipeline orchestration, multi-team deployments for enterprise scale, synchronous deadline alert callbacks, and continued progress toward full Task SDK separation.</p>
<div class="mt-auto">
- <a href="/blog/airflow-3.1.0/">
+ <a href="/blog/airflow-3.2.0/">
<button class="btn-hollow btn-blue bodytext__medium--cerulean-blue" >Read more</button>
diff --git a/blog/airflow-2.9.0/index.html b/blog/airflow-2.9.0/index.html
index e5d20da19a..926a3c8a6e 100644
--- a/blog/airflow-2.9.0/index.html
+++ b/blog/airflow-2.9.0/index.html
@@ -31,14 +31,14 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2024-04-08T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-04-07T20:24:10+05:30">
+ <meta property="article:modified_time" content="2026-04-07T21:16:22+05:30">
<meta property="article:tag" content="Release">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="Apache Airflow 2.9.0: Dataset and UI Improvements">
<meta itemprop="description" content="Apache Airflow 2.9.0 is here! Lots of exciting new Dataset and UI features/improvements this time around.">
<meta itemprop="datePublished" content="2024-04-08T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="1041">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Release">
diff --git a/blog/airflow-3.1.0/index.html b/blog/airflow-3.1.0/index.html
index 7077b40ada..4c5828a353 100644
--- a/blog/airflow-3.1.0/index.html
+++ b/blog/airflow-3.1.0/index.html
@@ -31,14 +31,14 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2025-09-25T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-04-07T20:24:10+05:30">
+ <meta property="article:modified_time" content="2026-04-07T21:16:22+05:30">
<meta property="article:tag" content="Release">
<meta property="og:image" content="/blog/airflow-3.1.0/images/3.1.0.jpg">
<meta itemprop="name" content="Apache Airflow 3.1.0: Human-Centered Workflows">
<meta itemprop="description" content="Apache Airflow 3.1.0 introduces Human-in-the-Loop workflows, 17-language internationalization, deadline alerts, and React plugin system for data orchestration teams.">
<meta itemprop="datePublished" content="2025-09-25T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="1583">
<meta itemprop="image" content="/blog/airflow-3.1.0/images/3.1.0.jpg">
<meta itemprop="keywords" content="Release">
@@ -795,32 +795,19 @@ human-centered. We can’t wait to see what you build with it!</p>
</div>
- <span class="bodytext__medium--brownish-grey box-event__blogpost--date">Tue, Apr 22, 2025</span>
+ <span class="bodytext__medium--brownish-grey box-event__blogpost--date">Tue, Apr 7, 2026</span>
</div>
<p class="box-event__blogpost--header">
- <a href="/blog/airflow-three-point-oh-is-here/">
- Apache Airflow® 3 is Generally Available!
+ <a href="/blog/airflow-3.2.0/">
+ Apache Airflow 3.2.0: Data-Aware Workflows at Scale
</a>
</p>
- <p class="box-event__blogpost--author">
-
-
-
- <a href="https://linkedin.com/in/kaxil" target="_blank" rel="noopener">Kaxil Naik</a>
-
- ,
-
-
- <a href="https://linkedin.com/in/vikramkoka" target="_blank" rel="noopener">Vikram Koka</a>
-
-
-
- </p>
+ <p class="box-event__blogpost--author">Rahul Vats</p>
- <p class="box-event__blogpost--description">We're proud to announce that Apache Airflow 3.0.0 has been released.</p>
+ <p class="box-event__blogpost--description">Apache Airflow 3.2.0 introduces Asset partitioning for granular pipeline orchestration, multi-team deployments for enterprise scale, synchronous deadline alert callbacks, and continued progress toward full Task SDK separation.</p>
<div class="mt-auto">
- <a href="/blog/airflow-three-point-oh-is-here/">
+ <a href="/blog/airflow-3.2.0/">
<button class="btn-hollow btn-blue bodytext__medium--cerulean-blue" >Read more</button>
@@ -845,19 +832,32 @@ human-centered. We can’t wait to see what you build with it!</p>
</div>
- <span class="bodytext__medium--brownish-grey box-event__blogpost--date">Thu, Aug 8, 2024</span>
+ <span class="bodytext__medium--brownish-grey box-event__blogpost--date">Tue, Apr 22, 2025</span>
</div>
<p class="box-event__blogpost--header">
- <a href="/blog/airflow-2.10.0/">
- Apache Airflow 2.10.0 is here
+ <a href="/blog/airflow-three-point-oh-is-here/">
+ Apache Airflow® 3 is Generally Available!
</a>
</p>
- <p class="box-event__blogpost--author">Utkarsh Sharma</p>
+ <p class="box-event__blogpost--author">
+
+
+
+ <a href="https://linkedin.com/in/kaxil" target="_blank" rel="noopener">Kaxil Naik</a>
+
+ ,
+
+
+ <a href="https://linkedin.com/in/vikramkoka" target="_blank" rel="noopener">Vikram Koka</a>
+
+
+
+ </p>
- <p class="box-event__blogpost--description">Apache Airflow 2.10.0 is a game-changer, with powerful Dataset improvements and the groundbreaking Hybrid Executor, set to redefine your workflow capabilities!</p>
+ <p class="box-event__blogpost--description">We're proud to announce that Apache Airflow 3.0.0 has been released.</p>
<div class="mt-auto">
- <a href="/blog/airflow-2.10.0/">
+ <a href="/blog/airflow-three-point-oh-is-here/">
<button class="btn-hollow btn-blue bodytext__medium--cerulean-blue" >Read more</button>
diff --git a/blog/airflow-3.2.0/images/3.2.0.jpg b/blog/airflow-3.2.0/images/3.2.0.jpg
new file mode 100644
index 0000000000..de4a50335f
Binary files /dev/null and b/blog/airflow-3.2.0/images/3.2.0.jpg differ
diff --git a/blog/airflow-3.2.0/images/asset_partitioning.png b/blog/airflow-3.2.0/images/asset_partitioning.png
new file mode 100644
index 0000000000..97d039b498
Binary files /dev/null and b/blog/airflow-3.2.0/images/asset_partitioning.png differ
diff --git a/blog/airflow-2.10.0/index.html b/blog/airflow-3.2.0/index.html
similarity index 67%
copy from blog/airflow-2.10.0/index.html
copy to blog/airflow-3.2.0/index.html
index 4d0ac26db4..47c5b53db8 100644
--- a/blog/airflow-2.10.0/index.html
+++ b/blog/airflow-3.2.0/index.html
@@ -23,24 +23,24 @@
<link rel="icon" type="image/png" href="/favicons/android-144x144.png" sizes="144x144">
<link rel="icon" type="image/png" href="/favicons/android-192x192.png" sizes="192x192">
-<title>Apache Airflow 2.10.0 is here | Apache Airflow</title><meta property="og:url" content="/blog/airflow-2.10.0/">
+<title>Apache Airflow 3.2.0: Data-Aware Workflows at Scale | Apache Airflow</title><meta property="og:url" content="/blog/airflow-3.2.0/">
<meta property="og:site_name" content="Apache Airflow">
- <meta property="og:title" content="Apache Airflow 2.10.0 is here">
- <meta property="og:description" content="Apache Airflow 2.10.0 is a game-changer, with powerful Dataset improvements and the groundbreaking Hybrid Executor, set to redefine your workflow capabilities!">
+ <meta property="og:title" content="Apache Airflow 3.2.0: Data-Aware Workflows at Scale">
+ <meta property="og:description" content="Apache Airflow 3.2.0 introduces Asset partitioning for granular pipeline orchestration, multi-team deployments for enterprise scale, synchronous deadline alert callbacks, and continued progress toward full Task SDK separation.">
<meta property="og:locale" content="en">
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
- <meta property="article:published_time" content="2024-08-08T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-04-07T20:24:10+05:30">
+ <meta property="article:published_time" content="2026-04-07T00:00:00+00:00">
+ <meta property="article:modified_time" content="2026-04-07T21:16:22+05:30">
<meta property="article:tag" content="Release">
- <meta property="og:image" content="/images/feature-image.png">
-
- <meta itemprop="name" content="Apache Airflow 2.10.0 is here">
- <meta itemprop="description" content="Apache Airflow 2.10.0 is a game-changer, with powerful Dataset improvements and the groundbreaking Hybrid Executor, set to redefine your workflow capabilities!">
- <meta itemprop="datePublished" content="2024-08-08T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
- <meta itemprop="wordCount" content="1040">
- <meta itemprop="image" content="/images/feature-image.png">
+ <meta property="og:image" content="/blog/airflow-3.2.0/images/3.2.0.jpg">
+
+ <meta itemprop="name" content="Apache Airflow 3.2.0: Data-Aware Workflows at Scale">
+ <meta itemprop="description" content="Apache Airflow 3.2.0 introduces Asset partitioning for granular pipeline orchestration, multi-team deployments for enterprise scale, synchronous deadline alert callbacks, and continued progress toward full Task SDK separation.">
+ <meta itemprop="datePublished" content="2026-04-07T00:00:00+00:00">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
+ <meta itemprop="wordCount" content="1619">
+ <meta itemprop="image" content="/blog/airflow-3.2.0/images/3.2.0.jpg">
<meta itemprop="keywords" content="Release">
@@ -68,7 +68,7 @@
crossorigin="anonymous"></script>
-<meta name="description" content="Apache Airflow 2.10.0 is a game-changer, with powerful Dataset improvements and the groundbreaking Hybrid Executor, set to redefine your workflow capabilities!" />
+<meta name="description" content="Apache Airflow 3.2.0 introduces Asset partitioning for granular pipeline orchestration, multi-team deployments for enterprise scale, synchronous deadline alert callbacks, and continued progress toward full Task SDK separation." />
<script>
@@ -515,14 +515,14 @@
</div>
- <span class="bodytext__medium--brownish-grey">Thu, Aug 8, 2024</span>
+ <span class="bodytext__medium--brownish-grey">Tue, Apr 7, 2026</span>
</div>
- <p class="blogpost-content__metadata--title">Apache Airflow 2.10.0 is here</p>
+ <p class="blogpost-content__metadata--title">Apache Airflow 3.2.0: Data-Aware Workflows at Scale</p>
<div class="blogpost-content__metadata--author">
- <span class="blogpost-content__metadata--author-name">Utkarsh Sharma</span>
+ <span class="blogpost-content__metadata--author-name">Rahul Vats</span>
- <a href="https://github.com/utkarsharma2/" class="blogpost-content__metadata--social-media-icon">
+ <a href="https://github.com/vatsrahul1001/" class="blogpost-content__metadata--social-media-icon">
<svg xmlns="http://www.w3.org/2000/svg" width="21.737" height="21.2" viewBox="0 0 21.737 21.2">
<path id="Path_1378" d="M33.971 1181.31a10.87 10.87 0 0 0-3.435 21.182c.543.1.742-.236.742-.524 0-.258-.009-.941-.015-1.848-3.023.657-3.661-1.457-3.661-1.457a2.876 2.876 0 0 0-1.207-1.59c-.987-.674.075-.661.075-.661a2.283 2.283 0 0 1 1.665 1.12 2.314 2.314 0 0 0 3.163.9 2.322 2.322 0 0 1 .69-1.453c-2.413-.274-4.951-1.207-4.951-5.371a4.2 4.2 0 0 1 1.119-2.917 3.908 3.908 0 0 1 .107-2.876s.913-.292 2.989 1.114a10.3 10.3 0 0 1 5.442 0c2.075-1.406 2.986-1.114 2.986-1.114a3.9 3.9 0 0 1 .1 [...]
</svg>
@@ -530,7 +530,7 @@
</a>
- <a href="https://linkedin.com/in/utkarsh-sharma-5791ab8a/" class="blogpost-content__metadata--social-media-icon">
+ <a href="https://linkedin.com/in/vats-rahul/" class="blogpost-content__metadata--social-media-icon">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 20 21">
<g id="Group_1745" data-name="Group 1745" transform="translate(.155 -.055)">
<ellipse id="Ellipse_20" cx="10" cy="10.5" fill="#51504f" data-name="Ellipse 20" rx="10" ry="10.5" transform="translate(-.155 .055)"/>
@@ -545,121 +545,211 @@
</div>
- <p class="blogpost-content__metadata--description">Apache Airflow 2.10.0 is a game-changer, with powerful Dataset improvements and the groundbreaking Hybrid Executor, set to redefine your workflow capabilities!</p>
+ <p class="blogpost-content__metadata--description">Apache Airflow 3.2.0 introduces Asset partitioning for granular pipeline orchestration, multi-team deployments for enterprise scale, synchronous deadline alert callbacks, and continued progress toward full Task SDK separation.</p>
</div>
<div class="markdown-content">
- <p>I’m happy to announce that Apache Airflow 2.10.0 is now available, bringing an array of noteworthy enhancements and new features that will greatly serve our community.</p>
+ <p>We’re proud to announce the release of <strong>Apache Airflow 3.2.0</strong>! Airflow 3.1 puts humans at the center of automated workflows. 3.2 brings that same precision to data: Asset partitioning for granular pipeline orchestration, multi-team deployments for enterprise scale, synchronous deadline alert callbacks, and continued progress toward full Task SDK separation.</p>
<p><strong>Details</strong>:</p>
-<p>📦 PyPI: <a href="https://pypi.org/project/apache-airflow/2.10.0/">https://pypi.org/project/apache-airflow/2.10.0/</a> <br>
-📚 Docs: <a href="https://airflow.apache.org/docs/apache-airflow/2.10.0/">https://airflow.apache.org/docs/apache-airflow/2.10.0/</a> <br>
-🛠 Release Notes: <a href="https://airflow.apache.org/docs/apache-airflow/2.10.0/release_notes.html">https://airflow.apache.org/docs/apache-airflow/2.10.0/release_notes.html</a> <br>
-🐳 Docker Image: “docker pull apache/airflow:2.10.0” <br>
-🚏 Constraints: <a href="https://github.com/apache/airflow/tree/constraints-2.10.0">https://github.com/apache/airflow/tree/constraints-2.10.0</a></p>
-<h2 id="airflow-now-collects-telemetry-data-by-default">Airflow now collects Telemetry data by default</h2>
-<p>With the release of Airflow 2.10.0, we’ve introduced the collection of basic telemetry data, as outlined <a href="https://airflow.apache.org/docs/apache-airflow/2.10.0/faq.html#does-airflow-collect-any-telemetry-data">here</a>. This data will play a crucial role in helping Airflow maintainers gain a deeper understanding of how Airflow is utilized across various deployments. The insights derived from this information are invaluable in guiding the prioritization of patches, minor releas [...]
-<p>For those who prefer not to participate in data collection, deployments can easily opt out by setting the <code>[usage_data_collection] enabled</code> option to <code>False</code> or by using the <code>SCARF_ANALYTICS=false</code> environment variable.</p>
-<h2 id="multiple-executor-configuration-formerly-hybrid-execution">Multiple Executor Configuration (formerly “Hybrid Execution”)</h2>
-<p>Each executor comes with its unique set of strengths and weaknesses, typically balancing latency, isolation, and compute efficiency. Traditionally, an Airflow environment is limited to a single executor, requiring users to make trade-offs, as no single executor is perfectly suited for all types of tasks.</p>
-<p>We are introducing a new feature that allows for the concurrent use of multiple executors within a single Airflow environment. This flexibility enables users to take advantage of the specific strengths of different executors for various tasks, improving overall efficiency and mitigating weaknesses. Users can set a default executor for the entire environment and, if necessary, assign particular executors to individual DAGs or tasks.</p>
-<p>To configure multiple executors we can pass comma separated list in airflow configuration. The first executor in the list will be the default executor for the environment.</p>
-
-<div class="chem">$$[core]
-executor = 'LocalExecutor,CeleryExecutor'$$</div><p>To make it easier for dag authors, we can also specify aliases for executors that can be specified in the executor configuration</p>
-<pre tabindex="0"><code class="language-commandline" data-lang="commandline">[core]
-executor = 'LocalExecutor,KubernetesExecutor,my.custom.module.ExecutorClass:ShortName'
-</code></pre><p>DAG authors can specify executors to use at the task</p>
-<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="n">BashOperator</span><span class="p">(</span>
-</span></span><span class="line"><span class="cl"> <span class="n">task_id</span><span class="o">=</span><span class="s2">"hello_world"</span><span class="p">,</span>
-</span></span><span class="line"><span class="cl"> <span class="n">executor</span><span class="o">=</span><span class="s2">"ShortName"</span><span class="p">,</span>
-</span></span><span class="line"><span class="cl"> <span class="n">bash_command</span><span class="o">=</span><span class="s2">"echo 'hello world!'"</span><span class="p">,</span>
+<p>📦 PyPI: <a href="https://pypi.org/project/apache-airflow/3.2.0/">https://pypi.org/project/apache-airflow/3.2.0/</a> <br>
+📚 Docs: <a href="https://airflow.apache.org/docs/apache-airflow/3.2.0/">https://airflow.apache.org/docs/apache-airflow/3.2.0/</a> <br>
+🛠️ Release Notes: <a href="https://airflow.apache.org/docs/apache-airflow/3.2.0/release_notes.html">https://airflow.apache.org/docs/apache-airflow/3.2.0/release_notes.html</a> <br>
+🐳 Docker Image: <code>docker pull apache/airflow:3.2.0</code> <br>
+🚏 Constraints: <a href="https://github.com/apache/airflow/tree/constraints-3.2.0">https://github.com/apache/airflow/tree/constraints-3.2.0</a></p>
+<h1 id="-asset-partitioning-aip-76-only-the-right-work-gets-triggered">🗂️ Asset Partitioning (AIP-76): Only the Right Work Gets Triggered</h1>
+<p>Asset partitioning has been one of the most requested additions to data-aware scheduling. If you work with date-partitioned S3 paths, Hive table partitions, BigQuery partitions, or really any partitioned data store, you’ve dealt with this: An upstream task updates one partition, and every downstream Dag fires regardless of which slice actually changed. It’s wasteful, and for large deployments it creates real operational noise.</p>
+<p>Asset partitioning in 3.2 makes this granular. Downstream Dags trigger only when the specific partition they care about gets updated. It’s the biggest change to data-aware scheduling since Assets were introduced, and it turns partition-driven orchestration into something Airflow handles natively rather than something you work around.</p>
+<p><img src="/blog/airflow-3.2.0/images/asset_partitioning.png" alt="Asset Partitioning"></p>
+<h2 id="key-capabilities">Key Capabilities</h2>
+<ul>
+<li><strong>Partition-driven scheduling</strong>: Dags trigger on specific partition updates, not every asset change</li>
+<li><strong>CronPartitionTimetable</strong>: Schedule Dags against partitions using cron expressions. Also available in the Task SDK</li>
+<li><strong>Backfill for partitioned Dags</strong>: Backfill historical partitions without re-triggering everything downstream (#61464)</li>
+<li><strong>Multi-asset partitions</strong>: A single Dag can listen for partitions across multiple assets, which matters when your downstream work depends on several sources aligning (#60577)</li>
+</ul>
+<p>For more advanced use cases, there are temporal and range partition mappers (#61522, #55247) for mapping time ranges and value ranges to partition keys, a partition key field on Dag run references (#61725) so you can inspect exactly which partition triggered a run, and PartitionedAssetTimetable for full control over how partition events from multiple assets get resolved into a unified trigger.</p>
+<p><strong>Example</strong>: Three upstream ingestion Dags each write to a separate asset on an hourly cadence. The downstream Dag only triggers when all three have updated the same hourly partition. Since the three assets don’t share a partition key natively, a mapper resolves them into a common key.</p>
+<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-py" data-lang="py"><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">annotations</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">airflow.sdk</span> <span class="kn">import</span> <span class="p">(</span>
+</span></span><span class="line"><span class="cl"> <span class="n">DAG</span><span class="p">,</span>
+</span></span><span class="line"><span class="cl"> <span class="n">Asset</span><span class="p">,</span>
+</span></span><span class="line"><span class="cl"> <span class="n">CronPartitionTimetable</span><span class="p">,</span>
+</span></span><span class="line"><span class="cl"> <span class="n">PartitionedAssetTimetable</span><span class="p">,</span>
+</span></span><span class="line"><span class="cl"> <span class="n">StartOfHourMapper</span><span class="p">,</span>
+</span></span><span class="line"><span class="cl"> <span class="n">asset</span><span class="p">,</span>
+</span></span><span class="line"><span class="cl"> <span class="n">task</span><span class="p">,</span>
</span></span><span class="line"><span class="cl"><span class="p">)</span>
</span></span><span class="line"><span class="cl">
-</span></span><span class="line"><span class="cl"><span class="nd">@task</span><span class="p">(</span><span class="n">executor</span><span class="o">=</span><span class="s2">"KubernetesExecutor"</span><span class="p">)</span>
-</span></span><span class="line"><span class="cl"><span class="k">def</span> <span class="nf">hello_world</span><span class="p">():</span>
-</span></span><span class="line"><span class="cl"> <span class="nb">print</span><span class="p">(</span><span class="s2">"hello world!"</span><span class="p">)</span>
-</span></span></code></pre></div><p>We can also specify executors on the DAG level</p>
-<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="k">def</span> <span class="nf">hello_world</span><span class="p">():</span>
-</span></span><span class="line"><span class="cl"> <span class="nb">print</span><span class="p">(</span><span class="s2">"hello world!"</span><span class="p">)</span>
+</span></span><span class="line"><span class="cl"><span class="n">team_a_player_stats</span> <span class="o">=</span> <span class="n">Asset</span><span class="p">(</span><span class="n">uri</span><span class="o">=</span><span class="s2">"file://incoming/player-stats/team_a.csv"</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s2">"team_a_player_stats"</span><span class="p">)</span>
+</span></span><span class="line"><span class="cl"><span class="n">combined_player_stats</span> <span class="o">=</span> <span class="n">Asset</span><span class="p">(</span><span class="n">uri</span><span class="o">=</span><span class="s2">"file://curated/player-stats/combined.csv"</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s2">"combined_player_stats"</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
-</span></span><span class="line"><span class="cl"><span class="k">def</span> <span class="nf">hello_world_again</span><span class="p">():</span>
-</span></span><span class="line"><span class="cl"> <span class="nb">print</span><span class="p">(</span><span class="s2">"hello world again!"</span><span class="p">)</span>
</span></span><span class="line"><span class="cl">
</span></span><span class="line"><span class="cl"><span class="k">with</span> <span class="n">DAG</span><span class="p">(</span>
-</span></span><span class="line"><span class="cl"> <span class="n">dag_id</span><span class="o">=</span><span class="s2">"hello_worlds"</span><span class="p">,</span>
-</span></span><span class="line"><span class="cl"> <span class="n">default_args</span><span class="o">=</span><span class="p">{</span><span class="s2">"executor"</span><span class="p">:</span> <span class="s2">"ShortName"</span><span class="p">},</span> <span class="c1"># Applies to all tasks in the DAG</span>
-</span></span><span class="line"><span class="cl"><span class="p">)</span> <span class="k">as</span> <span class="n">dag</span><span class="p">:</span>
-</span></span><span class="line"><span class="cl"> <span class="c1"># All tasks will use the executor from default args automatically</span>
-</span></span><span class="line"><span class="cl"> <span class="n">hw</span> <span class="o">=</span> <span class="n">hello_world</span><span class="p">()</span>
-</span></span><span class="line"><span class="cl"> <span class="n">hw_again</span> <span class="o">=</span> <span class="n">hello_world_again</span><span class="p">()</span>
-</span></span></code></pre></div><h2 id="dynamic-dataset-scheduling-through-datasetalias">Dynamic Dataset scheduling through DatasetAlias</h2>
-<p>Airflow 2.10 comes with <code>DatasetAlias</code> class which can be passed as a value in the <code>outlets</code>, <code>inlets</code> on a task, and <code>schedule</code> on a DAG. An instance of <code>DatasetAlias</code> is resolved dynamically to a real dataset. Downstream can depend on either the resolved dataset or on an alias itself.</p>
-<p><code>DatasetAlias</code> has one argument <code>name</code> that uniquely identifies the dataset. The task must first declare the alias as an outlet, and use <code>outlet_events</code> or <code>yield Metadata</code> to add events to it.</p>
-<h3 id="emit-a-dataset-event-during-task-execution-through-outlet_events">Emit a dataset event during task execution through outlet_events</h3>
-<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">airflow.datasets</span> <span class="kn">import</span> <span class="n">DatasetAlias</span>
+</span></span><span class="line"><span class="cl"> <span class="n">dag_id</span><span class="o">=</span><span class="s2">"ingest_team_a_player_stats"</span><span class="p">,</span>
+</span></span><span class="line"><span class="cl"> <span class="n">schedule</span><span class="o">=</span><span class="n">CronPartitionTimetable</span><span class="p">(</span><span class="s2">"0 * * * *"</span><span class="p">,</span> <span class="n">timezone</span><span class="o">=</span><span class="s2">"UTC"</span><span class="p">),</span>
+</span></span><span class="line"><span class="cl"> <span class="n">tags</span><span class="o">=</span><span class="p">[</span><span class="s2">"player-stats"</span><span class="p">,</span> <span class="s2">"ingestion"</span><span class="p">],</span>
+</span></span><span class="line"><span class="cl"><span class="p">):</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl"> <span class="nd">@task</span><span class="p">(</span><span class="n">outlets</span><span class="o">=</span><span class="p">[</span><span class="n">team_a_player_stats</span><span class="p">])</span>
+</span></span><span class="line"><span class="cl"> <span class="k">def</span> <span class="nf">ingest_team_a_stats</span><span class="p">():</span>
+</span></span><span class="line"><span class="cl"> <span class="s2">"""Materialize Team A player statistics for the current hourly partition."""</span>
+</span></span><span class="line"><span class="cl"> <span class="k">pass</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl"> <span class="n">ingest_team_a_stats</span><span class="p">()</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl"><span class="nd">@asset</span><span class="p">(</span><span class="n">schedule</span><span class="o">=</span><span class="n">CronPartitionTimetable</span><span class="p">(</span><span class="s2">"15 * * * *"</span><span class="p">,</span> <span class="n">timezone</span><span class="o">=</span><span class="s2">"UTC"</span><span class="p">))</span>
+</span></span><span class="line"><span class="cl"><span class="k">def</span> <span class="nf">team_b_player_stats</span><span class="p">():</span>
+</span></span><span class="line"><span class="cl"> <span class="k">pass</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl"><span class="k">with</span> <span class="n">DAG</span><span class="p">(</span>
+</span></span><span class="line"><span class="cl"> <span class="n">dag_id</span><span class="o">=</span><span class="s2">"clean_and_combine_player_stats"</span><span class="p">,</span>
+</span></span><span class="line"><span class="cl"> <span class="n">schedule</span><span class="o">=</span><span class="n">PartitionedAssetTimetable</span><span class="p">(</span>
+</span></span><span class="line"><span class="cl"> <span class="n">assets</span><span class="o">=</span><span class="n">team_a_player_stats</span> <span class="o">&</span> <span class="n">team_b_player_stats</span><span class="p">,</span>
+</span></span><span class="line"><span class="cl"> <span class="n">default_partition_mapper</span><span class="o">=</span><span class="n">StartOfHourMapper</span><span class="p">(),</span>
+</span></span><span class="line"><span class="cl"> <span class="p">),</span>
+</span></span><span class="line"><span class="cl"> <span class="n">catchup</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
+</span></span><span class="line"><span class="cl"><span class="p">):</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl"> <span class="nd">@task</span><span class="p">(</span><span class="n">outlets</span><span class="o">=</span><span class="p">[</span><span class="n">combined_player_stats</span><span class="p">])</span>
+</span></span><span class="line"><span class="cl"> <span class="k">def</span> <span class="nf">combine_player_stats</span><span class="p">(</span><span class="n">dag_run</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+</span></span><span class="line"><span class="cl"> <span class="s2">"""Merge the aligned hourly partitions into a combined dataset."""</span>
+</span></span><span class="line"><span class="cl"> <span class="nb">print</span><span class="p">(</span><span class="n">dag_run</span><span class="o">.</span><span class="n">partition_key</span><span class="p">)</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl"> <span class="n">combine_player_stats</span><span class="p">()</span>
+</span></span></code></pre></div><p>See <a href="https://github.com/apache/airflow/blob/main/airflow-core/src/airflow/example_dags/example_asset_partition.py"><code>example_asset_partition.py</code></a> and the Task SDK API docs for <code>PartitionedAssetTimetable</code> and partition mappers.</p>
+<h1 id="-multi-team-deployments-aip-67-airflow-for-the-enterprise">🏢 Multi-Team Deployments (AIP-67): Airflow for the Enterprise</h1>
+<blockquote>
+<p>⚠️ <strong>Experimental</strong>: Multi-Team support is experimental in Airflow 3.2 and may change in future releases based on user feedback.</p></blockquote>
+<p>Airflow 3.2 introduces multi-team support, allowing organizations to run multiple isolated teams within a single Airflow deployment. Each team can have its own Dags, connections, variables, pools, and executors— enabling true resource and permission isolation without requiring separate Airflow instances per team.</p>
+<p>This is particularly valuable for platform teams that serve multiple data engineering or data science teams from shared infrastructure, while maintaining strong boundaries between teams’ resources and access.</p>
+<h2 id="key-capabilities-1">Key Capabilities</h2>
+<ul>
+<li><strong>Per-team resource isolation</strong>: Each team has its own Dags, connections, variables, and pools</li>
+<li><strong>Per-team executors</strong>: Different teams can use different executors (e.g. Celery, Kubernetes, Local, AWS ECS, etc.) and configure them separately — #57837, #57910</li>
+<li><strong>Team-scoped authorization</strong>: Keycloak and Simple auth managers support team-scoped access control (#61351, #61861)</li>
+<li><strong>Team-scoped secrets</strong>: Use <code>AIRFLOW_VAR__{TEAM}___{KEY}</code> environment variable or <code>AIRFLOW_CONN__<TEAM>___<CONN_ID></code> pattern for team-specific secrets (#62588)</li>
+<li><strong>CLI management</strong>: New CLI commands for managing teams (#55283)</li>
+<li><strong>UI team selector</strong>: Team selector in connection, variable, and pool create/edit forms (#60237, #60474, #61082)</li>
+<li><strong>Full API support</strong>: <code>team_name</code> field added to Connection, Variable, and Pool APIs (#59336, #57102, #60952)</li>
+</ul>
+<h2 id="enabling-multi-team">Enabling Multi-Team</h2>
+
+<div class="chem">$$# In airflow.cfg:
+[core]
+multi_team = True
+
+# Or via environment variable:
+export AIRFLOW__CORE__MULTI_TEAM=True$$</div><h1 id="-deadline-alerts-now-with-synchronous-callbacks-aip-86">⏰ Deadline Alerts: Now With Synchronous Callbacks (AIP-86)</h1>
+<blockquote>
+<p>⚠️ <strong>Experimental</strong>: Deadline Alerts are experimental in Airflow 3.2 and may change in future releases based on user feedback.</p></blockquote>
+<p>Building on the Deadline Alerts system introduced in Airflow 3.1, this release adds synchronous callback support. In 3.1, callbacks ran through the triggerer (async only), which limited integration options. Synchronous callbacks execute directly via the executor, with optional targeting of a specific executor via the executor parameter.</p>
+<h2 id="whats-new-in-32">What’s New in 3.2</h2>
+<ul>
+<li><strong>SyncCallback support</strong>: Unlike <code>AsyncCallback</code> which runs on the triggerer, <code>SyncCallback</code> executes directly on the worker via the executor, with optional targeting of a specific executor</li>
+<li><strong>Multiple Deadline Alerts per Dag</strong>: Pass a list to the deadline parameter to configure multiple thresholds on a single Dag</li>
+<li><strong>Missed-deadline metadata in Grid API</strong>: Dag run API now includes missed-deadline information for programmatic monitoring</li>
+<li><strong>Improved UX for custom DeadlineReferences</strong>: Cleaner developer experience when defining custom deadline reference points (#57222)</li>
+</ul>
+<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-py" data-lang="py"><span class="line"><span class="cl"><span class="k">with</span> <span class="n">DAG</span><span class="p">(</span>
+</span></span><span class="line"><span class="cl"> <span class="n">dag_id</span><span class="o">=</span><span class="s2">"sync_deadline"</span><span class="p">,</span>
+</span></span><span class="line"><span class="cl"> <span class="n">deadline</span><span class="o">=</span><span class="n">DeadlineAlert</span><span class="p">(</span>
+</span></span><span class="line"><span class="cl"> <span class="n">reference</span><span class="o">=</span><span class="n">DeadlineReference</span><span class="o">.</span><span class="n">FIXED_DATETIME</span><span class="p">(</span><span class="n">datetime</span><span class="p">(</span><span class="mi">1980</span><span class="p">,</span> <span class="mi">8</span><span class="p">,</span> <span class="mi">10</span><span class="p">,</span> <span class="mi">2</span><span class="p">)),</span>
+</span></span><span class="line"><span class="cl"> <span class="n">interval</span><span class="o">=</span><span class="n">timedelta</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span>
+</span></span><span class="line"><span class="cl"> <span class="n">callback</span><span class="o">=</span><span class="n">SyncCallback</span><span class="p">(</span>
+</span></span><span class="line"><span class="cl"> <span class="n">SlackWebhookNotifier</span><span class="p">,</span>
+</span></span><span class="line"><span class="cl"> <span class="p">{</span><span class="s2">"text"</span><span class="p">:</span> <span class="s2">"Sync Callback; Alert should trigger immediately!"</span><span class="p">},</span>
+</span></span><span class="line"><span class="cl"> <span class="p">)</span>
+</span></span><span class="line"><span class="cl"> <span class="p">)</span>
+</span></span><span class="line"><span class="cl"><span class="p">):</span>
+</span></span><span class="line"><span class="cl"> <span class="n">EmptyOperator</span><span class="p">(</span><span class="n">task_id</span><span class="o">=</span><span class="s1">'empty_task'</span><span class="p">)</span>
+</span></span></code></pre></div><h1 id="-ui-enhancements">🖥️ UI Enhancements</h1>
+<ul>
+<li><strong>HITL Approval History</strong>: The Human-in-the-Loop approval interface now shows the complete audit trail of approvals and rejections for any task. (#56760, #55952)</li>
+<li><strong>XCom Management</strong>: You can now add, edit, and delete XCom values directly from the UI. (#58921)</li>
+<li><strong>Segmented state bar</strong>: Collapsed task groups and mapped tasks now show a segmented state bar for at-a-glance status (#61854)</li>
+<li><strong>Unified tooltips</strong>: Grid and Graph view tooltips now show dates, duration, and child states (#62119)</li>
+<li><strong>Filename in Dag Code tab</strong>: File identification now shown in the Code tab (#60759)</li>
+<li><strong>Copy button for logs</strong>: One-click log copying (#61185)</li>
+<li><strong>Date range filter</strong>: Filter Dag executions by date range (#60772)</li>
+<li><strong>Task upstream/downstream filter</strong>: Filter by upstream or downstream tasks in Graph and Grid views (#57237)</li>
+<li><strong>Data redaction</strong>: Sensitive fields are now redacted in the UI and Public API (#59873)</li>
+<li><strong>Custom theme support</strong>: <code>globalCss</code> and theme config for white-label/custom deployments (#61161, #58411)</li>
+<li><strong>Inherit core UI theme in React plugins</strong>: Plugin UIs now automatically match the core Airflow theme (#60256)</li>
+<li><strong>Task display names in Gantt</strong>: <code>task_display_name</code> shown for better readability (#61438)</li>
+</ul>
+<h1 id="-performance-improvements">🚀 Performance Improvements</h1>
+<p><strong>Rendered Task Instance Fields Cleanup: ~42x Faster.</strong> The cleanup job for rendered task instance fields has been rewritten and is roughly 42 times faster for Dags with many mapped tasks. Retention is now based on the N most recent Dag runs rather than N most recent task executions, which is both more intuitive and dramatically more performant. Config renamed: <code>max_num_rendered_ti_fields_per_task</code> → <code>num_dag_runs_to_retain_rendered_fields</code> (old name [...]
+<p><strong>Scheduler Improvements.</strong> For large-scale deployments, 3.2 addresses several known bottlenecks:</p>
+<ul>
+<li>The scheduler no longer loads all TaskInstances into memory, preventing memory spikes on large deployments (#60956)</li>
+<li>Faster task dequeuing loop (#61376)</li>
+<li>Queue query now enforces <code>max_active_tasks</code> directly, preventing over-queueing (#54103)</li>
+</ul>
+<p><strong>API Server Improvements:</strong></p>
+<ul>
+<li>Eliminated SerializedDag loads on task start, reducing memory usage (#60803)</li>
+<li><code>serialized_dag</code> data column now uses JSONB on PostgreSQL (#55979)</li>
+</ul>
+<h1 id="-task-sdk-evolution--developer-experience">🔧 Task SDK Evolution & Developer Experience</h1>
+<h2 id="task-sdk-decoupling-continues">Task SDK Decoupling Continues</h2>
+<p>Airflow 3.2 continues moving components from <code>airflow-core</code> into the Task SDK, progressing toward full client-server separation. This enables Dag authors to independently upgrade the Task SDK without requiring Airflow Core upgrades, reducing coordination overhead between Dag authors and Ops teams.</p>
+<p>Modules moved to Task SDK in this release (old import paths still work with deprecation warnings):</p>
+<ul>
+<li><strong>Exceptions</strong>: <code>AirflowSkipException</code>, <code>TaskDeferred</code>, etc. → <code>airflow.sdk.exceptions</code> (#59780)</li>
+<li><strong>Serde</strong>: <code>airflow.serialization.serde</code> → <code>airflow.sdk.serde</code>; serializers → <code>airflow.sdk.serde.serializers.*</code> (#58900)</li>
+<li><strong>SkipMixin / BranchMixIn</strong>: Moved to Task SDK; existing imports work via <code>common-compat</code> (#62749, #62776)</li>
+<li><strong>Lineage module</strong>: Moved to Task SDK for client-server separation (#60968, #61157)</li>
+<li><strong>Listeners module</strong>: Moved to shared library (#59883)</li>
+<li><strong>XCom API</strong>: Decoupled from <code>XComEncoder</code> (#58900)</li>
+</ul>
+<h2 id="pythonoperator-async-support">PythonOperator Async Support</h2>
+<p><code>PythonOperator</code> now supports async callables. You can pass an async function as the <code>python_callable</code> and the operator will correctly await it, enabling async I/O patterns without needing a custom operator. (#60268)</p>
+<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-py" data-lang="py"><span class="line"><span class="cl"><span class="nd">@task</span><span class="p">(</span><span class="n">show_return_value_in_logs</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+</span></span><span class="line"><span class="cl"><span class="k">async</span> <span class="k">def</span> <span class="nf">load_xml_files</span><span class="p">(</span><span class="n">files</span><span class="p">):</span>
+</span></span><span class="line"><span class="cl"> <span class="kn">import</span> <span class="nn">asyncio</span>
+</span></span><span class="line"><span class="cl"> <span class="kn">from</span> <span class="nn">io</span> <span class="kn">import</span> <span class="n">BytesIO</span>
+</span></span><span class="line"><span class="cl"> <span class="kn">from</span> <span class="nn">more_itertools</span> <span class="kn">import</span> <span class="n">chunked</span>
+</span></span><span class="line"><span class="cl"> <span class="kn">from</span> <span class="nn">os</span> <span class="kn">import</span> <span class="n">cpu_count</span>
+</span></span><span class="line"><span class="cl"> <span class="kn">from</span> <span class="nn">tenacity</span> <span class="kn">import</span> <span class="n">retry</span><span class="p">,</span> <span class="n">stop_after_attempt</span><span class="p">,</span> <span class="n">wait_fixed</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl"> <span class="kn">from</span> <span class="nn">airflow.providers.sftp.hooks.sftp</span> <span class="kn">import</span> <span class="n">SFTPClientPool</span>
</span></span><span class="line"><span class="cl">
-</span></span><span class="line"><span class="cl"><span class="nd">@task</span><span class="p">(</span><span class="n">outlets</span><span class="o">=</span><span class="p">[</span><span class="n">DatasetAlias</span><span class="p">(</span><span class="s2">"my-task-outputs"</span><span class="p">)])</span>
-</span></span><span class="line"><span class="cl"><span class="k">def</span> <span class="nf">my_task_with_outlet_events</span><span class="p">(</span><span class="o">*</span><span class="p">,</span> <span class="n">outlet_events</span><span class="p">):</span>
-</span></span><span class="line"><span class="cl"> <span class="n">outlet_events</span><span class="p">[</span><span class="s2">"my-task-outputs"</span><span class="p">]</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">Dataset</span><span class="p">(</span><span class="s2">"s3://bucket/my-task"</span><span class="p">))</span>
-</span></span></code></pre></div><h3 id="emit-a-dataset-event-during-task-execution-by-yielding-metadata">Emit a dataset event during task execution by yielding Metadata</h3>
-<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">airflow.datasets.metadata</span> <span class="kn">import</span> <span class="n">Metadata</span>
+</span></span><span class="line"><span class="cl"> <span class="nb">print</span><span class="p">(</span><span class="s2">"number of files:"</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">files</span><span class="p">))</span>
</span></span><span class="line"><span class="cl">
-</span></span><span class="line"><span class="cl"><span class="nd">@task</span><span class="p">(</span><span class="n">outlets</span><span class="o">=</span><span class="p">[</span><span class="n">DatasetAlias</span><span class="p">(</span><span class="s2">"my-task-outputs"</span><span class="p">)])</span>
-</span></span><span class="line"><span class="cl"><span class="k">def</span> <span class="nf">my_task_with_metadata</span><span class="p">():</span>
-</span></span><span class="line"><span class="cl"> <span class="n">s3_dataset</span> <span class="o">=</span> <span class="n">Dataset</span><span class="p">(</span><span class="s2">"s3://bucket/my-task}"</span><span class="p">)</span>
-</span></span><span class="line"><span class="cl"> <span class="k">yield</span> <span class="n">Metadata</span><span class="p">(</span><span class="n">s3_dataset</span><span class="p">,</span> <span class="n">alias</span><span class="o">=</span><span class="s2">"my-task-outputs"</span><span class="p">)</span>
-</span></span></code></pre></div><p>There are two options for scheduling based on dataset aliases. Schedule based on <code>DatasetAlias</code> or real datasets.</p>
-<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="cl"><span class="k">with</span> <span class="n">DAG</span><span class="p">(</span><span class="n">dag_id</span><span class="o">=</span><span class="s2">"dataset-alias-producer"</span><span class="p">):</span>
-</span></span><span class="line"><span class="cl"> <span class="nd">@task</span><span class="p">(</span><span class="n">outlets</span><span class="o">=</span><span class="p">[</span><span class="n">DatasetAlias</span><span class="p">(</span><span class="s2">"example-alias"</span><span class="p">)])</span>
-</span></span><span class="line"><span class="cl"> <span class="k">def</span> <span class="nf">produce_dataset_events</span><span class="p">(</span><span class="o">*</span><span class="p">,</span> <span class="n">outlet_events</span><span class="p">):</span>
-</span></span><span class="line"><span class="cl"> <span class="n">outlet_events</span><span class="p">[</span><span class="s2">"example-alias"</span><span class="p">]</span><span class="o">.</span><span class="n">add</span><span class="p">(</span><span class="n">Dataset</span><span class="p">(</span><span class="s2">"s3://bucket/my-task"</span><span class="p">))</span>
+</span></span><span class="line"><span class="cl"> <span class="k">async</span> <span class="k">with</span> <span class="n">SFTPClientPool</span><span class="p">(</span><span class="n">sftp_conn_id</span><span class="o">=</span><span class="n">sftp_conn</span><span class="p">,</span> <span class="n">pool_size</span><span class="o">=</span><span class="n">cpu_count</span><span class="p">())</span> <span class="k">as</span> <span class="n">pool</span><span class="p">:</span>
+</span></span><span class="line"><span class="cl"> <span class="nd">@retry</span><span class="p">(</span><span class="n">stop</span><span class="o">=</span><span class="n">stop_after_attempt</span><span class="p">(</span><span class="mi">3</span><span class="p">),</span> <span class="n">wait</span><span class="o">=</span><span class="n">wait_fixed</span><span class="p">(</span><span class="mi">5</span><span class="p">))</span>
+</span></span><span class="line"><span class="cl"> <span class="k">async</span> <span class="k">def</span> <span class="nf">download_file</span><span class="p">(</span><span class="n">file</span><span class="p">):</span>
+</span></span><span class="line"><span class="cl"> <span class="k">async</span> <span class="k">with</span> <span class="n">pool</span><span class="o">.</span><span class="n">get_sftp_client</span><span class="p">()</span> <span class="k">as</span> <span class="n">sftp</span><span class="p">:</span>
+</span></span><span class="line"><span class="cl"> <span class="nb">print</span><span class="p">(</span><span class="s2">"downloading:"</span><span class="p">,</span> <span class="n">file</span><span class="p">)</span>
+</span></span><span class="line"><span class="cl"> <span class="n">buffer</span> <span class="o">=</span> <span class="n">BytesIO</span><span class="p">()</span>
+</span></span><span class="line"><span class="cl"> <span class="k">async</span> <span class="k">with</span> <span class="n">sftp</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="n">file</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="n">xml_encoding</span><span class="p">)</span> <span class="k">as</span> <span class="n">remote_file</span><span class="p">:</span>
+</span></span><span class="line"><span class="cl"> <span class="n">data</span> <span class="o">=</span> <span class="k">await</span> <span class="n">remote_file</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
+</span></span><span class="line"><span class="cl"> <span class="n">buffer</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">data</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="n">xml_encoding</span><span class="p">))</span>
+</span></span><span class="line"><span class="cl"> <span class="n">buffer</span><span class="o">.</span><span class="n">seek</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
+</span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="n">buffer</span>
</span></span><span class="line"><span class="cl">
-</span></span><span class="line"><span class="cl"><span class="k">with</span> <span class="n">DAG</span><span class="p">(</span><span class="n">dag_id</span><span class="o">=</span><span class="s2">"dataset-consumer"</span><span class="p">,</span> <span class="n">schedule</span><span class="o">=</span><span class="n">Dataset</span><span class="p">(</span><span class="s2">"s3://bucket/my-task"</span><span class="p">)):</span>
-</span></span><span class="line"><span class="cl"> <span class="o">...</span>
+</span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="n">batch</span> <span class="ow">in</span> <span class="n">chunked</span><span class="p">(</span><span class="n">files</span><span class="p">,</span> <span class="n">cpu_count</span><span class="p">()</span> <span class="o">*</span> <span class="mi">2</span><span class="p">):</span>
+</span></span><span class="line"><span class="cl"> <span class="n">tasks</span> <span class="o">=</span> <span class="p">[</span><span class="n">asyncio</span><span class="o">.</span><span class="n">create_task</span><span class="p">(</span><span class="n">download_file</span><span class="p">(</span><span class="n">f</span><span class="p">))</span> <span class="k">for</span> <span class="n">f</span> <span class="ow">in</span> <span class="n">batch</span><span class="p">]</span>
</span></span><span class="line"><span class="cl">
-</span></span><span class="line"><span class="cl"><span class="k">with</span> <span class="n">DAG</span><span class="p">(</span><span class="n">dag_id</span><span class="o">=</span><span class="s2">"dataset-alias-consumer"</span><span class="p">,</span> <span class="n">schedule</span><span class="o">=</span><span class="n">DatasetAlias</span><span class="p">(</span><span class="s2">"example-alias"</span><span class="p">)):</span>
-</span></span><span class="line"><span class="cl"> <span class="o">...</span>
-</span></span></code></pre></div><h3 id="dataset-aliases-ui-enhancements">Dataset Aliases UI Enhancements</h3>
-<p>Now users can see Dataset Aliases in legend of each cross-dag dependency graph with a corresponded icon/color.</p>
-<p><img src="/blog/airflow-2.10.0/dag_dependencies_legend.png" alt="DAG Dependencies graph"></p>
-<h2 id="dark-mode-for-airflow-ui">Dark Mode for Airflow UI</h2>
-<p>Airflow 2.10 comes with new Dark Mode feature which is designed to enhance user experience by offering an alternative visual theme that is easier on the eyes, especially in low-light conditions. You can toggle the crescent icon on the right side of the navigation bar to switch between light and dark mode.</p>
-<p><img src="/blog/airflow-2.10.0/airflow_dark_mode.png" alt="Airflow Dark mode"></p>
-<p><img src="/blog/airflow-2.10.0/airflow_light_mode.png" alt="Airflow Light mode"></p>
-<h2 id="task-instance-history">Task Instance History</h2>
-<p>In Apache Airflow 2.10.0, when a task instance is retried or cleared, its execution history is maintained. You can view this history by clicking on the task instance in the Grid view, allowing you to access information about each attempt, such as logs, execution durations, and any failures. This feature improves transparency into the task’s execution process, making it easier to troubleshoot and analyze your DAGs.</p>
-<p><img src="/blog/airflow-2.10.0/task_instance_history.png" alt="Task instance history"></p>
-<p>The history displays the final values of the task instance attributes for each specific run. On the log page, you can also access the logs for each attempt of the task instance. This information is valuable for debugging purposes.</p>
-<p><img src="/blog/airflow-2.10.0/task_instance_history_log.png" alt="Task instance history"></p>
-<h2 id="dataset-ui-enhancements">Dataset UI Enhancements</h2>
-<p>The dataset page has been revamped to include a focused dataset events section with additional details such as extras, consuming DAGs, and producing tasks.
-<img src="/blog/airflow-2.10.0/dataset_list.png" alt="Dataset list"></p>
-<p>We now have separate dependency graph and dataset list pages in new tabs, enhancing the user experience.</p>
-<p><img src="/blog/airflow-2.10.0/dependency_graph.png" alt="Dataset dependency graph"></p>
-<p>Dataset events are now displayed in both the Details tab of each DAG run and within the DAG graph.</p>
-<p><img src="/blog/airflow-2.10.0/dataset_details.png" alt="Dataset list"></p>
-<h3 id="toggle-datasets-in-graph">Toggle datasets in Graph</h3>
-<p>We can now toggle the datasets in the DAG graph</p>
-<p><img src="/blog/airflow-2.10.0/dataset_toggle_on.png" alt="Dataset toggle button on">
-<img src="/blog/airflow-2.10.0/dataset_toggle_off.png" alt="Dataset toggle button off"></p>
-<h3 id="dataset-conditions-in-dag-graph-view">Dataset Conditions in DAG Graph view</h3>
-<p>We now display the graph view with logical gates. Datasets with actual events are highlighted with a different border, making it easier to see what triggered the selected run.</p>
-<p><img src="/blog/airflow-2.10.0/render_dataset_conditions.png" alt="Render dataset conditions in graph view"></p>
-<h3 id="dataset-event-info-in-dag-graph">Dataset event info in DAG Graph</h3>
-<p>For a DAG run, users can now view the dataset events connected to it directly in the graph view.</p>
-<p><img src="/blog/airflow-2.10.0/dataset_info.png" alt="Dataset event info"></p>
-<h2 id="on-demand-dag-re-parsing">On-demand DAG Re-parsing</h2>
-<p>In 2.10 users can now reparse the DAGs on demand using below button on DAG list and DAG detail pages</p>
-<p><img src="/blog/airflow-2.10.0/DAG_reparsing_button_list.png" alt="DAG Reparsing button on DAG list page">
-<img src="/blog/airflow-2.10.0/DAG_reparse_button_detail.png" alt="DAG Reparsing button on DAG detail page"></p>
-<h2 id="additional-new-features">Additional new features</h2>
-<p>Here are just a few interesting new features since there are too many to list in full:</p>
+</span></span><span class="line"><span class="cl"> <span class="c1"># Wait for this batch to finish before starting the next</span>
+</span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="n">task</span> <span class="ow">in</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">as_completed</span><span class="p">(</span><span class="n">tasks</span><span class="p">):</span>
+</span></span><span class="line"><span class="cl"> <span class="n">result</span> <span class="o">=</span> <span class="k">await</span> <span class="n">task</span>
+</span></span><span class="line"><span class="cl"> <span class="c1"># Do something with result or accumulate it and return it as an XCom</span>
+</span></span></code></pre></div><h1 id="updated-securiy-model">Updated securiy model</h1>
+<p>We are working on improving isolation and improving security of Airflow deployments and in order to make our users better informed of what expectations they should have for Airflow security, we updated the security model to reflect changes implemented in Airflow 3.2.0 and explain future improvements that we work on in this area. See more: <a href="https://airflow.apache.org/docs/apache-airflow/stable/security/security_model.html">Airflow Security Model</a>.</p>
+<h1 id="-community-appreciation">🙏 Community Appreciation</h1>
+<p>This release represents the collaborative effort of hundreds of contributors from around the world. Special thanks to our release manager and all the developers, documentarians, testers, and community members who made Airflow 3.2.0 possible.</p>
+<p>Thanks to contributors like you, the Airflow project continues to thrive. Whether you’re filing issues, submitting PRs, improving documentation, or helping others in the community, every contribution matters.</p>
+<h1 id="-get-involved">🔗 Get Involved</h1>
<ul>
-<li>Deferrable operators can now execute directly from the triggerer without needing to go through the worker. This is especially efficient for certain operators, like sensors, and can help teams save both time and money.</li>
-<li>Crucial executor logs are now integrated into the task logs. If the executor fails to start a task, the relevant error messages will be available in the task logs, simplifying the debugging process.</li>
+<li><strong>Try the Release</strong>: Upgrade your development environment and explore the new features</li>
+<li><strong>Join the Conversation</strong>: Connect with us on <a href="https://s.apache.org/airflow-slack">Slack</a> and the <a href="https://airflow.apache.org/community/">dev mailing list</a></li>
+<li><strong>Contribute</strong>: Check out our <a href="https://github.com/apache/airflow/blob/main/contributing-docs/README.rst">contribution guide</a></li>
+<li><strong>Provide Feedback</strong>: Share your experiences and suggestions on <a href="https://github.com/apache/airflow">GitHub</a></li>
</ul>
-<h2 id="contributors">Contributors</h2>
-<p>Thanks to everyone who contributed to this release, including Andrey Anshin, Brent Bovenzi, Daniel Standish, Ephraim Anierobi, Hussein Awala, Jarek Potiuk, Jed Cunningham, Jens Scheffler, Tzu-ping Chung, Vincent, and over 63 others!</p>
-<p>I hope you enjoy using Apache Airflow 2.10.0!</p>
+<p>Apache Airflow 3.2.0 marks a new chapter in data-aware, partition-driven workflow orchestration. We can’t wait to see what you build with it!</p>
</div>
@@ -701,10 +791,10 @@ executor = 'LocalExecutor,KubernetesExecutor,my.custom.module.ExecutorClass:
<div class="no-width-restriction no-desktop">
<ul class="list-unstyled d-flex justify-content-between align-items-center mb-0 pt-5">
<li>
- <a href="/blog/airflow-2.9.0/" aria-label="Previous - Apache Airflow 2.9.0: Dataset and UI Improvements" class="btn btn-primary"><span class="me-1">←</span>Previous</a>
+ <a href="/blog/airflow-registry/" aria-label="Previous - Introducing the Apache Airflow Registry" class="btn btn-primary"><span class="me-1">←</span>Previous</a>
</li>
<li>
- <a href="/blog/airflow-survey-2024/" aria-label="Next - Airflow Survey 2024" class="btn btn-primary">Next<span class="ms-1">→</span></a>
+ <a class="btn btn-primary disabled">Next<span class="ms-1">→</span></a>
</li>
</ul>
@@ -833,7 +923,7 @@ executor = 'LocalExecutor,KubernetesExecutor,my.custom.module.ExecutorClass:
- <a href=https://github.com/apache/airflow-site/edit/main/landing-pages/site/content/en//blog/airflow-2.10.0>
+ <a href=https://github.com/apache/airflow-site/edit/main/landing-pages/site/content/en//blog/airflow-3.2.0>
diff --git a/blog/airflow-registry/index.html b/blog/airflow-registry/index.html
index ed887dc9db..58ae6f6138 100644
--- a/blog/airflow-registry/index.html
+++ b/blog/airflow-registry/index.html
@@ -31,14 +31,14 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2026-03-19T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-04-07T20:24:10+05:30">
+ <meta property="article:modified_time" content="2026-04-07T21:16:22+05:30">
<meta property="article:tag" content="Community">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="Introducing the Apache Airflow Registry">
<meta itemprop="description" content="The Apache Airflow Registry is a searchable catalog of 98 providers and 1,600+ modules — operators, hooks, sensors, triggers, and more — now live on airflow.apache.org.">
<meta itemprop="datePublished" content="2026-03-19T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="520">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Community">
@@ -662,7 +662,7 @@
<a href="/blog/airflow-survey-2025/" aria-label="Previous - Airflow Survey 2025" class="btn btn-primary"><span class="me-1">←</span>Previous</a>
</li>
<li>
- <a class="btn btn-primary disabled">Next<span class="ms-1">→</span></a>
+ <a href="/blog/airflow-3.2.0/" aria-label="Next - Apache Airflow 3.2.0: Data-Aware Workflows at Scale" class="btn btn-primary">Next<span class="ms-1">→</span></a>
</li>
</ul>
diff --git a/blog/airflow-survey-2020/index.html b/blog/airflow-survey-2020/index.html
index c9c16a2b4b..6ff8f07e14 100644
--- a/blog/airflow-survey-2020/index.html
+++ b/blog/airflow-survey-2020/index.html
@@ -31,7 +31,7 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2021-03-09T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-04-07T20:24:10+05:30">
+ <meta property="article:modified_time" content="2026-04-07T21:16:22+05:30">
<meta property="article:tag" content="Community">
<meta property="article:tag" content="Survey">
<meta property="article:tag" content="Users">
@@ -40,7 +40,7 @@
<meta itemprop="name" content="Airflow Survey 2020">
<meta itemprop="description" content="We observe steady growth in number of users as well as in an amount of active contributors. So listening and understanding our community is of high importance.">
<meta itemprop="datePublished" content="2021-03-09T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="2136">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Community,Survey,Users">
diff --git a/blog/airflow-survey-2022/index.html b/blog/airflow-survey-2022/index.html
index e6965732fa..01c9acd482 100644
--- a/blog/airflow-survey-2022/index.html
+++ b/blog/airflow-survey-2022/index.html
@@ -31,7 +31,7 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2022-06-17T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-04-07T20:24:10+05:30">
+ <meta property="article:modified_time" content="2026-04-07T21:16:22+05:30">
<meta property="article:tag" content="Community">
<meta property="article:tag" content="Survey">
<meta property="article:tag" content="Users">
@@ -40,7 +40,7 @@
<meta itemprop="name" content="Airflow Survey 2022">
<meta itemprop="description" content="2021 saw rapid adoption of Airflow 2, and continued growth of the community. This annual survey helps us understand how people are using Airflow, and where we can best focus our efforts going forward.">
<meta itemprop="datePublished" content="2022-06-17T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="3866">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Community,Survey,Users">
diff --git a/blog/airflow-survey-2023/index.html b/blog/airflow-survey-2023/index.html
index bf9c32fa2d..7f956c388f 100644
--- a/blog/airflow-survey-2023/index.html
+++ b/blog/airflow-survey-2023/index.html
@@ -31,7 +31,7 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2023-09-21T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-04-07T20:24:10+05:30">
+ <meta property="article:modified_time" content="2026-04-07T21:16:22+05:30">
<meta property="article:tag" content="Community">
<meta property="article:tag" content="Survey">
<meta property="article:tag" content="Users">
@@ -40,7 +40,7 @@
<meta itemprop="name" content="Airflow Survey 2023">
<meta itemprop="description" content="Airflow 2 has seen rapid adoption, accompanied by continuous community growth. This annual survey helps us understand how people use Airflow and where we can best focus our efforts as we advance.">
<meta itemprop="datePublished" content="2023-09-21T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="3">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Community,Survey,Users">
diff --git a/blog/airflow-survey-2024/index.html b/blog/airflow-survey-2024/index.html
index 67ab87a501..50391e9d2e 100644
--- a/blog/airflow-survey-2024/index.html
+++ b/blog/airflow-survey-2024/index.html
@@ -31,7 +31,7 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2025-02-27T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-04-07T20:24:10+05:30">
+ <meta property="article:modified_time" content="2026-04-07T21:16:22+05:30">
<meta property="article:tag" content="Community">
<meta property="article:tag" content="Survey">
<meta property="article:tag" content="Users">
@@ -40,7 +40,7 @@
<meta itemprop="name" content="Airflow Survey 2024">
<meta itemprop="description" content="With more than 5,250 responses from 116 countries, this is the largest data engineering survey to date. Conducted annually, it offers valuable insights into Airflow usage and helps guide our future efforts.">
<meta itemprop="datePublished" content="2025-02-27T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="45">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Community,Survey,Users">
diff --git a/blog/airflow-survey-2025/index.html b/blog/airflow-survey-2025/index.html
index 17d252382b..be92d761bd 100644
--- a/blog/airflow-survey-2025/index.html
+++ b/blog/airflow-survey-2025/index.html
@@ -31,7 +31,7 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2026-01-22T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-04-07T20:24:10+05:30">
+ <meta property="article:modified_time" content="2026-04-07T21:16:22+05:30">
<meta property="article:tag" content="Community">
<meta property="article:tag" content="Survey">
<meta property="article:tag" content="Users">
@@ -40,7 +40,7 @@
<meta itemprop="name" content="Airflow Survey 2025">
<meta itemprop="description" content="With more than 5,818 responses from 122 countries, this is the largest data engineering survey to date. Conducted annually, the Apache Airflow Survey offers valuable insights into Airflow usage and helps guide our future efforts.">
<meta itemprop="datePublished" content="2026-01-22T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="45">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Community,Survey,Users">
diff --git a/blog/airflow-survey/index.html b/blog/airflow-survey/index.html
index 30d8260159..4ac285da14 100644
--- a/blog/airflow-survey/index.html
+++ b/blog/airflow-survey/index.html
@@ -31,7 +31,7 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2019-12-11T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-04-07T20:24:10+05:30">
+ <meta property="article:modified_time" content="2026-04-07T21:16:22+05:30">
<meta property="article:tag" content="Community">
<meta property="article:tag" content="Survey">
<meta property="article:tag" content="Users">
@@ -40,7 +40,7 @@
<meta itemprop="name" content="Airflow Survey 2019">
<meta itemprop="description" content="Receiving and adjusting to our users’ feedback is a must. Let’s see who Airflow users are, how they play with it, and what they miss.">
<meta itemprop="datePublished" content="2019-12-11T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="1723">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Community,Survey,Users">
diff --git a/blog/airflow-three-point-oh-is-here/index.html b/blog/airflow-three-point-oh-is-here/index.html
index 12cd74b82a..b927a1bc5c 100644
--- a/blog/airflow-three-point-oh-is-here/index.html
+++ b/blog/airflow-three-point-oh-is-here/index.html
@@ -31,14 +31,14 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2025-04-22T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-04-07T20:24:10+05:30">
+ <meta property="article:modified_time" content="2026-04-07T21:16:22+05:30">
<meta property="article:tag" content="Release">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="Apache Airflow® 3 is Generally Available!">
<meta itemprop="description" content="We're proud to announce that Apache Airflow 3.0.0 has been released.">
<meta itemprop="datePublished" content="2025-04-22T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="2194">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Release">
@@ -1044,19 +1044,19 @@ Let’s build the future of data orchestration—together.</p>
</div>
- <span class="bodytext__medium--brownish-grey box-event__blogpost--date">Thu, Sep 25, 2025</span>
+ <span class="bodytext__medium--brownish-grey box-event__blogpost--date">Tue, Apr 7, 2026</span>
</div>
<p class="box-event__blogpost--header">
- <a href="/blog/airflow-3.1.0/">
- Apache Airflow 3.1.0: Human-Centered Workflows
+ <a href="/blog/airflow-3.2.0/">
+ Apache Airflow 3.2.0: Data-Aware Workflows at Scale
</a>
</p>
- <p class="box-event__blogpost--author">Kaxil Naik</p>
+ <p class="box-event__blogpost--author">Rahul Vats</p>
- <p class="box-event__blogpost--description">Apache Airflow 3.1.0 introduces Human-in-the-Loop workflows, 17-language internationalization, deadline alerts, and React plugin system for data orchestration teams.</p>
+ <p class="box-event__blogpost--description">Apache Airflow 3.2.0 introduces Asset partitioning for granular pipeline orchestration, multi-team deployments for enterprise scale, synchronous deadline alert callbacks, and continued progress toward full Task SDK separation.</p>
<div class="mt-auto">
- <a href="/blog/airflow-3.1.0/">
+ <a href="/blog/airflow-3.2.0/">
<button class="btn-hollow btn-blue bodytext__medium--cerulean-blue" >Read more</button>
@@ -1081,19 +1081,19 @@ Let’s build the future of data orchestration—together.</p>
</div>
- <span class="bodytext__medium--brownish-grey box-event__blogpost--date">Thu, Aug 8, 2024</span>
+ <span class="bodytext__medium--brownish-grey box-event__blogpost--date">Thu, Sep 25, 2025</span>
</div>
<p class="box-event__blogpost--header">
- <a href="/blog/airflow-2.10.0/">
- Apache Airflow 2.10.0 is here
+ <a href="/blog/airflow-3.1.0/">
+ Apache Airflow 3.1.0: Human-Centered Workflows
</a>
</p>
- <p class="box-event__blogpost--author">Utkarsh Sharma</p>
+ <p class="box-event__blogpost--author">Kaxil Naik</p>
- <p class="box-event__blogpost--description">Apache Airflow 2.10.0 is a game-changer, with powerful Dataset improvements and the groundbreaking Hybrid Executor, set to redefine your workflow capabilities!</p>
+ <p class="box-event__blogpost--description">Apache Airflow 3.1.0 introduces Human-in-the-Loop workflows, 17-language internationalization, deadline alerts, and React plugin system for data orchestration teams.</p>
<div class="mt-auto">
- <a href="/blog/airflow-2.10.0/">
+ <a href="/blog/airflow-3.1.0/">
<button class="btn-hollow btn-blue bodytext__medium--cerulean-blue" >Read more</button>
diff --git a/blog/airflow-two-point-oh-is-here/index.html b/blog/airflow-two-point-oh-is-here/index.html
index 5b99c2f3e0..17d96fed2b 100644
--- a/blog/airflow-two-point-oh-is-here/index.html
+++ b/blog/airflow-two-point-oh-is-here/index.html
@@ -31,14 +31,14 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2020-12-17T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-04-07T20:24:10+05:30">
+ <meta property="article:modified_time" content="2026-04-07T21:16:22+05:30">
<meta property="article:tag" content="Release">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="Apache Airflow 2.0 is here!">
<meta itemprop="description" content="We're proud to announce that Apache Airflow 2.0.0 has been released.">
<meta itemprop="datePublished" content="2020-12-17T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="1165">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Release">
diff --git a/blog/airflow_summit_2021/index.html b/blog/airflow_summit_2021/index.html
index 22e00dc4d2..cbf1a09aa3 100644
--- a/blog/airflow_summit_2021/index.html
+++ b/blog/airflow_summit_2021/index.html
@@ -31,7 +31,7 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2021-03-21T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-04-07T20:24:10+05:30">
+ <meta property="article:modified_time" content="2026-04-07T21:16:22+05:30">
<meta property="article:tag" content="Community">
<meta property="article:tag" content="Airflow Summit">
<meta property="og:image" content="/images/feature-image.png">
@@ -39,7 +39,7 @@
<meta itemprop="name" content="Airflow Summit 2021">
<meta itemprop="description" content="We are thrilled about Airflow Summit 2021!">
<meta itemprop="datePublished" content="2021-03-21T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="77">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Community,Airflow Summit">
diff --git a/blog/airflow_summit_2022/index.html b/blog/airflow_summit_2022/index.html
index f1d3b85097..e7aae3d28f 100644
--- a/blog/airflow_summit_2022/index.html
+++ b/blog/airflow_summit_2022/index.html
@@ -31,7 +31,7 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2022-05-16T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-04-07T20:24:10+05:30">
+ <meta property="article:modified_time" content="2026-04-07T21:16:22+05:30">
<meta property="article:tag" content="Community">
<meta property="article:tag" content="Airflow Summit">
<meta property="og:image" content="/images/feature-image.png">
@@ -39,7 +39,7 @@
<meta itemprop="name" content="Airflow Summit 2022">
<meta itemprop="description" content="Airflow Summit 2022 is here">
<meta itemprop="datePublished" content="2022-05-16T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="129">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Community,Airflow Summit">
diff --git a/blog/airflowctl-0.1.0/index.html b/blog/airflowctl-0.1.0/index.html
index c17244a2be..c82a60e372 100644
--- a/blog/airflowctl-0.1.0/index.html
+++ b/blog/airflowctl-0.1.0/index.html
@@ -31,14 +31,14 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2025-10-15T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-04-07T20:24:10+05:30">
+ <meta property="article:modified_time" content="2026-04-07T21:16:22+05:30">
<meta property="article:tag" content="Release">
<meta property="og:image" content="/images/blog/airflowctl-0.1.0/airflowctl-cover.png">
<meta itemprop="name" content="Apache Airflow CTL aka airflowctl 0.1.0">
<meta itemprop="description" content="A new way of using API in Airflow. Apache Airflow CTL aka airflowctl 0.1.0 is released! Secure way to manage your Apache Airflow deployments with ease.">
<meta itemprop="datePublished" content="2025-10-15T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="898">
<meta itemprop="image" content="/images/blog/airflowctl-0.1.0/airflowctl-cover.png">
<meta itemprop="keywords" content="Release">
diff --git a/blog/announcing-new-website/index.html b/blog/announcing-new-website/index.html
index dedee43f26..07fa94a0f3 100644
--- a/blog/announcing-new-website/index.html
+++ b/blog/announcing-new-website/index.html
@@ -31,14 +31,14 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2019-12-11T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-04-07T20:24:10+05:30">
+ <meta property="article:modified_time" content="2026-04-07T21:16:22+05:30">
<meta property="article:tag" content="Community">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="New Airflow website">
<meta itemprop="description" content="We are thrilled about our new website!">
<meta itemprop="datePublished" content="2019-12-11T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="282">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Community">
diff --git a/blog/apache-airflow-for-newcomers/index.html b/blog/apache-airflow-for-newcomers/index.html
index 7657523d08..83a41f7de3 100644
--- a/blog/apache-airflow-for-newcomers/index.html
+++ b/blog/apache-airflow-for-newcomers/index.html
@@ -32,7 +32,7 @@ Authoring Workflow in Apache Airflow. Airflow makes it easy to author workflows
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2020-08-17T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-04-07T20:24:10+05:30">
+ <meta property="article:modified_time" content="2026-04-07T21:16:22+05:30">
<meta property="article:tag" content="Community">
<meta property="og:image" content="/images/feature-image.png">
@@ -40,7 +40,7 @@ Authoring Workflow in Apache Airflow. Airflow makes it easy to author workflows
<meta itemprop="description" content="Apache Airflow is a platform to programmatically author, schedule, and monitor workflows. A workflow is a sequence of tasks that processes a set of data. You can think of workflow as the path that describes how tasks go from being undone to done. Scheduling, on the other hand, is the process of planning, controlling, and optimizing when a particular task should be done.
Authoring Workflow in Apache Airflow. Airflow makes it easy to author workflows using python scripts. A Directed Acyclic Graph (DAG) represents a workflow in Airflow. It is a collection of tasks in a way that shows each task’s relationships and dependencies. You can have as many DAGs as you want, and Airflow will execute them according to the task’s relationships and dependencies. If task B depends on the successful execution of another task A, it means Airflow will run task A and only r [...]
<meta itemprop="datePublished" content="2020-08-17T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="1070">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Community">
diff --git a/blog/apache-con-europe-2019-thoughts-and-insights-by-airflow-committers/index.html b/blog/apache-con-europe-2019-thoughts-and-insights-by-airflow-committers/index.html
index 951e058428..bf2957df77 100644
--- a/blog/apache-con-europe-2019-thoughts-and-insights-by-airflow-committers/index.html
+++ b/blog/apache-con-europe-2019-thoughts-and-insights-by-airflow-committers/index.html
@@ -31,14 +31,14 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2019-11-22T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-04-07T20:24:10+05:30">
+ <meta property="article:modified_time" content="2026-04-07T21:16:22+05:30">
<meta property="article:tag" content="Community">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="ApacheCon Europe 2019 — Thoughts and Insights by Airflow Committers">
<meta itemprop="description" content="Here come some thoughts by Airflow committers and contributors from the ApacheCon Europe 2019. Get to know the ASF community!">
<meta itemprop="datePublished" content="2019-11-22T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="138">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Community">
diff --git a/blog/documenting-using-local-development-environments/index.html b/blog/documenting-using-local-development-environments/index.html
index 348f92e177..81c7c9dc2c 100644
--- a/blog/documenting-using-local-development-environments/index.html
+++ b/blog/documenting-using-local-development-environments/index.html
@@ -31,14 +31,14 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2019-11-22T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-04-07T20:24:10+05:30">
+ <meta property="article:modified_time" content="2026-04-07T21:16:22+05:30">
<meta property="article:tag" content="Development">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="Documenting using local development environment">
<meta itemprop="description" content="The story behind documenting local development environment of Apache Airflow">
<meta itemprop="datePublished" content="2019-11-22T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="256">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Development">
diff --git a/blog/experience-in-google-season-of-docs-2019-with-apache-airflow/index.html b/blog/experience-in-google-season-of-docs-2019-with-apache-airflow/index.html
index b7328a4271..0cf13134d4 100644
--- a/blog/experience-in-google-season-of-docs-2019-with-apache-airflow/index.html
+++ b/blog/experience-in-google-season-of-docs-2019-with-apache-airflow/index.html
@@ -32,7 +32,7 @@ About Me I have been writing tech articles on medium as well as my blog for the
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2019-12-20T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-04-07T20:24:10+05:30">
+ <meta property="article:modified_time" content="2026-04-07T21:16:22+05:30">
<meta property="article:tag" content="Documentation">
<meta property="og:image" content="/images/feature-image.png">
@@ -40,7 +40,7 @@ About Me I have been writing tech articles on medium as well as my blog for the
<meta itemprop="description" content="I came across Google Season of Docs (GSoD) almost by accident, thanks to my extensive HackerNews and Twitter addiction. I was familiar with the Google Summer of Code but not with this program. It turns out it was the inaugural phase. I read the details, and the process felt a lot like GSoC except that this was about documentation.
About Me I have been writing tech articles on medium as well as my blog for the past 1.5 years. Blogging helps me test my understanding of the concepts as untangling the toughest of ideas in simple sentences requires a considerable time investment.">
<meta itemprop="datePublished" content="2019-12-20T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="1521">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Documentation">
diff --git a/blog/experience-with-airflow-as-an-outreachy-intern/index.html b/blog/experience-with-airflow-as-an-outreachy-intern/index.html
index 9d3c53789f..3c93cc2145 100644
--- a/blog/experience-with-airflow-as-an-outreachy-intern/index.html
+++ b/blog/experience-with-airflow-as-an-outreachy-intern/index.html
@@ -32,7 +32,7 @@ Contribution Period The first thing I had to do was choose a project under an or
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2020-08-30T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-04-07T20:24:10+05:30">
+ <meta property="article:modified_time" content="2026-04-07T21:16:22+05:30">
<meta property="article:tag" content="Community">
<meta property="og:image" content="/images/feature-image.png">
@@ -40,7 +40,7 @@ Contribution Period The first thing I had to do was choose a project under an or
<meta itemprop="description" content="Outreachy is a program which organises three months paid internships with FOSS projects for people who are typically underrepresented in those projects.
Contribution Period The first thing I had to do was choose a project under an organisation. After going through all the projects I chose “Extending the REST API of Apache Airflow”, because I had a good idea of what REST API(s) are, so I thought it would be easier to get started with the contributions. The next step was to set up Airflow’s dev environment which thanks to Breeze, was a breeze. Since I had never contributed to FOSS before so this part was overwhelming but there were plenty [...]
<meta itemprop="datePublished" content="2020-08-30T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="528">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Community">
diff --git a/blog/fab-oid-vulnerability/index.html b/blog/fab-oid-vulnerability/index.html
index 90c796091d..7d752f3671 100644
--- a/blog/fab-oid-vulnerability/index.html
+++ b/blog/fab-oid-vulnerability/index.html
@@ -31,14 +31,14 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2024-02-26T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-04-07T20:24:10+05:30">
+ <meta property="article:modified_time" content="2026-04-07T21:16:22+05:30">
<meta property="article:tag" content="Vulnerabilities">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="Vulnerability in long deprecated OpenID authentication method in Flask AppBuilder">
<meta itemprop="description" content="Advising users who still use a long-deprecated OpenID authentication method in Flask AppBuilder to upgrade to Apache Airflow 2.8.2">
<meta itemprop="datePublished" content="2024-02-26T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="638">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Vulnerabilities">
diff --git a/blog/implementing-stable-api-for-apache-airflow/index.html b/blog/implementing-stable-api-for-apache-airflow/index.html
index 35eb91f627..9c78aa33f6 100644
--- a/blog/implementing-stable-api-for-apache-airflow/index.html
+++ b/blog/implementing-stable-api-for-apache-airflow/index.html
@@ -31,14 +31,14 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2020-07-19T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-04-07T20:24:10+05:30">
+ <meta property="article:modified_time" content="2026-04-07T21:16:22+05:30">
<meta property="article:tag" content="REST API">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="Implementing Stable API for Apache Airflow">
<meta itemprop="description" content="An Outreachy intern's progress report on contributing to Apache Airflow REST API.">
<meta itemprop="datePublished" content="2020-07-19T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="703">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="REST API">
diff --git a/blog/index.html b/blog/index.html
index 2e7bc94da2..7632d6d6e8 100644
--- a/blog/index.html
+++ b/blog/index.html
@@ -34,7 +34,7 @@
<meta itemprop="name" content="Blog">
<meta itemprop="description" content="Platform created by the community to programmatically author, schedule and monitor workflows.">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="image" content="/images/feature-image.png">
@@ -564,6 +564,43 @@
<div class="list-item list-item--wide">
+<div class="card">
+ <div class="box-event__blogpost">
+ <div class="box-event__blogpost--metadata">
+ <div class="tags-container">
+
+
+ <a class="tag" href="/blog/tags/release/">Release</a>
+
+
+ </div>
+ <span class="bodytext__medium--brownish-grey box-event__blogpost--date">Tue, Apr 7, 2026</span>
+ </div>
+ <p class="box-event__blogpost--header">
+ <a href="/blog/airflow-3.2.0/">
+ Apache Airflow 3.2.0: Data-Aware Workflows at Scale
+ </a>
+ </p>
+
+ <p class="box-event__blogpost--author">Rahul Vats</p>
+
+ <p class="box-event__blogpost--description">Apache Airflow 3.2.0 introduces Asset partitioning for granular pipeline orchestration, multi-team deployments for enterprise scale, synchronous deadline alert callbacks, and continued progress toward full Task SDK separation.</p>
+ <div class="mt-auto">
+ <a href="/blog/airflow-3.2.0/">
+
+
+<button class="btn-hollow btn-blue bodytext__medium--cerulean-blue" >Read more</button>
+
+ </a>
+ </div>
+ </div>
+</div>
+
+ </div>
+
+ <div class="list-item list-item--wide">
+
+
<div class="card">
<div class="box-event__blogpost">
<div class="box-event__blogpost--metadata">
diff --git a/blog/index.xml b/blog/index.xml
index 7adf969460..86a143c67e 100644
--- a/blog/index.xml
+++ b/blog/index.xml
@@ -8,15 +8,229 @@
<id>/blog/</id>
- <updated>2026-04-07T20:24:10Z</updated>
+ <updated>2026-04-07T21:16:22Z</updated>
+ <entry>
+ <title>Apache Airflow 3.2.0: Data-Aware Workflows at Scale</title>
+ <link href="/blog/airflow-3.2.0/" rel="alternate"/>
+ <id>/blog/airflow-3.2.0/</id>
+ <published>2026-04-07T00:00:00Z</published>
+ <updated>2026-04-07T21:16:22Z</updated>
+ <author>
+ <name>Apache Airflow</name>
+ </author>
+ <content type="html"><![CDATA[<p>We’re proud to announce the release of <strong>Apache Airflow 3.2.0</strong>! Airflow 3.1 puts humans at the center of automated workflows. 3.2 brings that same precision to data: Asset partitioning for granular pipeline orchestration, multi-team deployments for enterprise scale, synchronous deadline alert callbacks, and continued progress toward full Task SDK separation.</p>
+<p><strong>Details</strong>:</p>
+<p>📦 PyPI: <a href="https://pypi.org/project/apache-airflow/3.2.0/">https://pypi.org/project/apache-airflow/3.2.0/</a> <br>
+📚 Docs: <a href="https://airflow.apache.org/docs/apache-airflow/3.2.0/">https://airflow.apache.org/docs/apache-airflow/3.2.0/</a> <br>
+🛠️ Release Notes: <a href="https://airflow.apache.org/docs/apache-airflow/3.2.0/release_notes.html">https://airflow.apache.org/docs/apache-airflow/3.2.0/release_notes.html</a> <br>
+🐳 Docker Image: <code>docker pull apache/airflow:3.2.0</code> <br>
+🚏 Constraints: <a href="https://github.com/apache/airflow/tree/constraints-3.2.0">https://github.com/apache/airflow/tree/constraints-3.2.0</a></p>
+<h1 id="-asset-partitioning-aip-76-only-the-right-work-gets-triggered">🗂️ Asset Partitioning (AIP-76): Only the Right Work Gets Triggered</h1>
+<p>Asset partitioning has been one of the most requested additions to data-aware scheduling. If you work with date-partitioned S3 paths, Hive table partitions, BigQuery partitions, or really any partitioned data store, you’ve dealt with this: An upstream task updates one partition, and every downstream Dag fires regardless of which slice actually changed. It’s wasteful, and for large deployments it creates real operational noise.</p>
+<p>Asset partitioning in 3.2 makes this granular. Downstream Dags trigger only when the specific partition they care about gets updated. It’s the biggest change to data-aware scheduling since Assets were introduced, and it turns partition-driven orchestration into something Airflow handles natively rather than something you work around.</p>
+<p><img src="/blog/airflow-3.2.0/images/asset_partitioning.png" alt="Asset Partitioning"></p>
+<h2 id="key-capabilities">Key Capabilities</h2>
+<ul>
+<li><strong>Partition-driven scheduling</strong>: Dags trigger on specific partition updates, not every asset change</li>
+<li><strong>CronPartitionTimetable</strong>: Schedule Dags against partitions using cron expressions. Also available in the Task SDK</li>
+<li><strong>Backfill for partitioned Dags</strong>: Backfill historical partitions without re-triggering everything downstream (#61464)</li>
+<li><strong>Multi-asset partitions</strong>: A single Dag can listen for partitions across multiple assets, which matters when your downstream work depends on several sources aligning (#60577)</li>
+</ul>
+<p>For more advanced use cases, there are temporal and range partition mappers (#61522, #55247) for mapping time ranges and value ranges to partition keys, a partition key field on Dag run references (#61725) so you can inspect exactly which partition triggered a run, and PartitionedAssetTimetable for full control over how partition events from multiple assets get resolved into a unified trigger.</p>
+<p><strong>Example</strong>: Three upstream ingestion Dags each write to a separate asset on an hourly cadence. The downstream Dag only triggers when all three have updated the same hourly partition. Since the three assets don’t share a partition key natively, a mapper resolves them into a common key.</p>
+<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-py" data-lang="py"><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">__future__</span> <span class="kn">import</span> <span class="n">annotations</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl"><span class="kn">from</span> <span class="nn">airflow.sdk</span> <span class="kn">import</span> <span class="p">(</span>
+</span></span><span class="line"><span class="cl"> <span class="n">DAG</span><span class="p">,</span>
+</span></span><span class="line"><span class="cl"> <span class="n">Asset</span><span class="p">,</span>
+</span></span><span class="line"><span class="cl"> <span class="n">CronPartitionTimetable</span><span class="p">,</span>
+</span></span><span class="line"><span class="cl"> <span class="n">PartitionedAssetTimetable</span><span class="p">,</span>
+</span></span><span class="line"><span class="cl"> <span class="n">StartOfHourMapper</span><span class="p">,</span>
+</span></span><span class="line"><span class="cl"> <span class="n">asset</span><span class="p">,</span>
+</span></span><span class="line"><span class="cl"> <span class="n">task</span><span class="p">,</span>
+</span></span><span class="line"><span class="cl"><span class="p">)</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl"><span class="n">team_a_player_stats</span> <span class="o">=</span> <span class="n">Asset</span><span class="p">(</span><span class="n">uri</span><span class="o">=</span><span class="s2">"file://incoming/player-stats/team_a.csv"</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s2">"team_a_player_stats"</span><span class="p">)</span>
+</span></span><span class="line"><span class="cl"><span class="n">combined_player_stats</span> <span class="o">=</span> <span class="n">Asset</span><span class="p">(</span><span class="n">uri</span><span class="o">=</span><span class="s2">"file://curated/player-stats/combined.csv"</span><span class="p">,</span> <span class="n">name</span><span class="o">=</span><span class="s2">"combined_player_stats"</span><span class="p">)</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl"><span class="k">with</span> <span class="n">DAG</span><span class="p">(</span>
+</span></span><span class="line"><span class="cl"> <span class="n">dag_id</span><span class="o">=</span><span class="s2">"ingest_team_a_player_stats"</span><span class="p">,</span>
+</span></span><span class="line"><span class="cl"> <span class="n">schedule</span><span class="o">=</span><span class="n">CronPartitionTimetable</span><span class="p">(</span><span class="s2">"0 * * * *"</span><span class="p">,</span> <span class="n">timezone</span><span class="o">=</span><span class="s2">"UTC"</span><span class="p">),</span>
+</span></span><span class="line"><span class="cl"> <span class="n">tags</span><span class="o">=</span><span class="p">[</span><span class="s2">"player-stats"</span><span class="p">,</span> <span class="s2">"ingestion"</span><span class="p">],</span>
+</span></span><span class="line"><span class="cl"><span class="p">):</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl"> <span class="nd">@task</span><span class="p">(</span><span class="n">outlets</span><span class="o">=</span><span class="p">[</span><span class="n">team_a_player_stats</span><span class="p">])</span>
+</span></span><span class="line"><span class="cl"> <span class="k">def</span> <span class="nf">ingest_team_a_stats</span><span class="p">():</span>
+</span></span><span class="line"><span class="cl"> <span class="s2">"""Materialize Team A player statistics for the current hourly partition."""</span>
+</span></span><span class="line"><span class="cl"> <span class="k">pass</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl"> <span class="n">ingest_team_a_stats</span><span class="p">()</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl"><span class="nd">@asset</span><span class="p">(</span><span class="n">schedule</span><span class="o">=</span><span class="n">CronPartitionTimetable</span><span class="p">(</span><span class="s2">"15 * * * *"</span><span class="p">,</span> <span class="n">timezone</span><span class="o">=</span><span class="s2">"UTC"</span><span class="p">))</span>
+</span></span><span class="line"><span class="cl"><span class="k">def</span> <span class="nf">team_b_player_stats</span><span class="p">():</span>
+</span></span><span class="line"><span class="cl"> <span class="k">pass</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl"><span class="k">with</span> <span class="n">DAG</span><span class="p">(</span>
+</span></span><span class="line"><span class="cl"> <span class="n">dag_id</span><span class="o">=</span><span class="s2">"clean_and_combine_player_stats"</span><span class="p">,</span>
+</span></span><span class="line"><span class="cl"> <span class="n">schedule</span><span class="o">=</span><span class="n">PartitionedAssetTimetable</span><span class="p">(</span>
+</span></span><span class="line"><span class="cl"> <span class="n">assets</span><span class="o">=</span><span class="n">team_a_player_stats</span> <span class="o">&</span> <span class="n">team_b_player_stats</span><span class="p">,</span>
+</span></span><span class="line"><span class="cl"> <span class="n">default_partition_mapper</span><span class="o">=</span><span class="n">StartOfHourMapper</span><span class="p">(),</span>
+</span></span><span class="line"><span class="cl"> <span class="p">),</span>
+</span></span><span class="line"><span class="cl"> <span class="n">catchup</span><span class="o">=</span><span class="kc">False</span><span class="p">,</span>
+</span></span><span class="line"><span class="cl"><span class="p">):</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl"> <span class="nd">@task</span><span class="p">(</span><span class="n">outlets</span><span class="o">=</span><span class="p">[</span><span class="n">combined_player_stats</span><span class="p">])</span>
+</span></span><span class="line"><span class="cl"> <span class="k">def</span> <span class="nf">combine_player_stats</span><span class="p">(</span><span class="n">dag_run</span><span class="o">=</span><span class="kc">None</span><span class="p">):</span>
+</span></span><span class="line"><span class="cl"> <span class="s2">"""Merge the aligned hourly partitions into a combined dataset."""</span>
+</span></span><span class="line"><span class="cl"> <span class="nb">print</span><span class="p">(</span><span class="n">dag_run</span><span class="o">.</span><span class="n">partition_key</span><span class="p">)</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl"> <span class="n">combine_player_stats</span><span class="p">()</span>
+</span></span></code></pre></div><p>See <a href="https://github.com/apache/airflow/blob/main/airflow-core/src/airflow/example_dags/example_asset_partition.py"><code>example_asset_partition.py</code></a> and the Task SDK API docs for <code>PartitionedAssetTimetable</code> and partition mappers.</p>
+<h1 id="-multi-team-deployments-aip-67-airflow-for-the-enterprise">🏢 Multi-Team Deployments (AIP-67): Airflow for the Enterprise</h1>
+<blockquote>
+<p>⚠️ <strong>Experimental</strong>: Multi-Team support is experimental in Airflow 3.2 and may change in future releases based on user feedback.</p></blockquote>
+<p>Airflow 3.2 introduces multi-team support, allowing organizations to run multiple isolated teams within a single Airflow deployment. Each team can have its own Dags, connections, variables, pools, and executors— enabling true resource and permission isolation without requiring separate Airflow instances per team.</p>
+<p>This is particularly valuable for platform teams that serve multiple data engineering or data science teams from shared infrastructure, while maintaining strong boundaries between teams’ resources and access.</p>
+<h2 id="key-capabilities-1">Key Capabilities</h2>
+<ul>
+<li><strong>Per-team resource isolation</strong>: Each team has its own Dags, connections, variables, and pools</li>
+<li><strong>Per-team executors</strong>: Different teams can use different executors (e.g. Celery, Kubernetes, Local, AWS ECS, etc.) and configure them separately — #57837, #57910</li>
+<li><strong>Team-scoped authorization</strong>: Keycloak and Simple auth managers support team-scoped access control (#61351, #61861)</li>
+<li><strong>Team-scoped secrets</strong>: Use <code>AIRFLOW_VAR__{TEAM}___{KEY}</code> environment variable or <code>AIRFLOW_CONN__<TEAM>___<CONN_ID></code> pattern for team-specific secrets (#62588)</li>
+<li><strong>CLI management</strong>: New CLI commands for managing teams (#55283)</li>
+<li><strong>UI team selector</strong>: Team selector in connection, variable, and pool create/edit forms (#60237, #60474, #61082)</li>
+<li><strong>Full API support</strong>: <code>team_name</code> field added to Connection, Variable, and Pool APIs (#59336, #57102, #60952)</li>
+</ul>
+<h2 id="enabling-multi-team">Enabling Multi-Team</h2>
+<pre tabindex="0"><code># In airflow.cfg:
+[core]
+multi_team = True
+
+# Or via environment variable:
+export AIRFLOW__CORE__MULTI_TEAM=True
+</code></pre><h1 id="-deadline-alerts-now-with-synchronous-callbacks-aip-86">⏰ Deadline Alerts: Now With Synchronous Callbacks (AIP-86)</h1>
+<blockquote>
+<p>⚠️ <strong>Experimental</strong>: Deadline Alerts are experimental in Airflow 3.2 and may change in future releases based on user feedback.</p></blockquote>
+<p>Building on the Deadline Alerts system introduced in Airflow 3.1, this release adds synchronous callback support. In 3.1, callbacks ran through the triggerer (async only), which limited integration options. Synchronous callbacks execute directly via the executor, with optional targeting of a specific executor via the executor parameter.</p>
+<h2 id="whats-new-in-32">What’s New in 3.2</h2>
+<ul>
+<li><strong>SyncCallback support</strong>: Unlike <code>AsyncCallback</code> which runs on the triggerer, <code>SyncCallback</code> executes directly on the worker via the executor, with optional targeting of a specific executor</li>
+<li><strong>Multiple Deadline Alerts per Dag</strong>: Pass a list to the deadline parameter to configure multiple thresholds on a single Dag</li>
+<li><strong>Missed-deadline metadata in Grid API</strong>: Dag run API now includes missed-deadline information for programmatic monitoring</li>
+<li><strong>Improved UX for custom DeadlineReferences</strong>: Cleaner developer experience when defining custom deadline reference points (#57222)</li>
+</ul>
+<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-py" data-lang="py"><span class="line"><span class="cl"><span class="k">with</span> <span class="n">DAG</span><span class="p">(</span>
+</span></span><span class="line"><span class="cl"> <span class="n">dag_id</span><span class="o">=</span><span class="s2">"sync_deadline"</span><span class="p">,</span>
+</span></span><span class="line"><span class="cl"> <span class="n">deadline</span><span class="o">=</span><span class="n">DeadlineAlert</span><span class="p">(</span>
+</span></span><span class="line"><span class="cl"> <span class="n">reference</span><span class="o">=</span><span class="n">DeadlineReference</span><span class="o">.</span><span class="n">FIXED_DATETIME</span><span class="p">(</span><span class="n">datetime</span><span class="p">(</span><span class="mi">1980</span><span class="p">,</span> <span class="mi">8</span><span class="p">,</span> <span class="mi">10</span><span class="p">,</span> <span class="mi">2</span><span class="p">)),</span>
+</span></span><span class="line"><span class="cl"> <span class="n">interval</span><span class="o">=</span><span class="n">timedelta</span><span class="p">(</span><span class="mi">0</span><span class="p">),</span>
+</span></span><span class="line"><span class="cl"> <span class="n">callback</span><span class="o">=</span><span class="n">SyncCallback</span><span class="p">(</span>
+</span></span><span class="line"><span class="cl"> <span class="n">SlackWebhookNotifier</span><span class="p">,</span>
+</span></span><span class="line"><span class="cl"> <span class="p">{</span><span class="s2">"text"</span><span class="p">:</span> <span class="s2">"Sync Callback; Alert should trigger immediately!"</span><span class="p">},</span>
+</span></span><span class="line"><span class="cl"> <span class="p">)</span>
+</span></span><span class="line"><span class="cl"> <span class="p">)</span>
+</span></span><span class="line"><span class="cl"><span class="p">):</span>
+</span></span><span class="line"><span class="cl"> <span class="n">EmptyOperator</span><span class="p">(</span><span class="n">task_id</span><span class="o">=</span><span class="s1">'empty_task'</span><span class="p">)</span>
+</span></span></code></pre></div><h1 id="-ui-enhancements">🖥️ UI Enhancements</h1>
+<ul>
+<li><strong>HITL Approval History</strong>: The Human-in-the-Loop approval interface now shows the complete audit trail of approvals and rejections for any task. (#56760, #55952)</li>
+<li><strong>XCom Management</strong>: You can now add, edit, and delete XCom values directly from the UI. (#58921)</li>
+<li><strong>Segmented state bar</strong>: Collapsed task groups and mapped tasks now show a segmented state bar for at-a-glance status (#61854)</li>
+<li><strong>Unified tooltips</strong>: Grid and Graph view tooltips now show dates, duration, and child states (#62119)</li>
+<li><strong>Filename in Dag Code tab</strong>: File identification now shown in the Code tab (#60759)</li>
+<li><strong>Copy button for logs</strong>: One-click log copying (#61185)</li>
+<li><strong>Date range filter</strong>: Filter Dag executions by date range (#60772)</li>
+<li><strong>Task upstream/downstream filter</strong>: Filter by upstream or downstream tasks in Graph and Grid views (#57237)</li>
+<li><strong>Data redaction</strong>: Sensitive fields are now redacted in the UI and Public API (#59873)</li>
+<li><strong>Custom theme support</strong>: <code>globalCss</code> and theme config for white-label/custom deployments (#61161, #58411)</li>
+<li><strong>Inherit core UI theme in React plugins</strong>: Plugin UIs now automatically match the core Airflow theme (#60256)</li>
+<li><strong>Task display names in Gantt</strong>: <code>task_display_name</code> shown for better readability (#61438)</li>
+</ul>
+<h1 id="-performance-improvements">🚀 Performance Improvements</h1>
+<p><strong>Rendered Task Instance Fields Cleanup: ~42x Faster.</strong> The cleanup job for rendered task instance fields has been rewritten and is roughly 42 times faster for Dags with many mapped tasks. Retention is now based on the N most recent Dag runs rather than N most recent task executions, which is both more intuitive and dramatically more performant. Config renamed: <code>max_num_rendered_ti_fields_per_task</code> → <code>num_dag_runs_to_retain_rendered_fields</code> (old name [...]
+<p><strong>Scheduler Improvements.</strong> For large-scale deployments, 3.2 addresses several known bottlenecks:</p>
+<ul>
+<li>The scheduler no longer loads all TaskInstances into memory, preventing memory spikes on large deployments (#60956)</li>
+<li>Faster task dequeuing loop (#61376)</li>
+<li>Queue query now enforces <code>max_active_tasks</code> directly, preventing over-queueing (#54103)</li>
+</ul>
+<p><strong>API Server Improvements:</strong></p>
+<ul>
+<li>Eliminated SerializedDag loads on task start, reducing memory usage (#60803)</li>
+<li><code>serialized_dag</code> data column now uses JSONB on PostgreSQL (#55979)</li>
+</ul>
+<h1 id="-task-sdk-evolution--developer-experience">🔧 Task SDK Evolution & Developer Experience</h1>
+<h2 id="task-sdk-decoupling-continues">Task SDK Decoupling Continues</h2>
+<p>Airflow 3.2 continues moving components from <code>airflow-core</code> into the Task SDK, progressing toward full client-server separation. This enables Dag authors to independently upgrade the Task SDK without requiring Airflow Core upgrades, reducing coordination overhead between Dag authors and Ops teams.</p>
+<p>Modules moved to Task SDK in this release (old import paths still work with deprecation warnings):</p>
+<ul>
+<li><strong>Exceptions</strong>: <code>AirflowSkipException</code>, <code>TaskDeferred</code>, etc. → <code>airflow.sdk.exceptions</code> (#59780)</li>
+<li><strong>Serde</strong>: <code>airflow.serialization.serde</code> → <code>airflow.sdk.serde</code>; serializers → <code>airflow.sdk.serde.serializers.*</code> (#58900)</li>
+<li><strong>SkipMixin / BranchMixIn</strong>: Moved to Task SDK; existing imports work via <code>common-compat</code> (#62749, #62776)</li>
+<li><strong>Lineage module</strong>: Moved to Task SDK for client-server separation (#60968, #61157)</li>
+<li><strong>Listeners module</strong>: Moved to shared library (#59883)</li>
+<li><strong>XCom API</strong>: Decoupled from <code>XComEncoder</code> (#58900)</li>
+</ul>
+<h2 id="pythonoperator-async-support">PythonOperator Async Support</h2>
+<p><code>PythonOperator</code> now supports async callables. You can pass an async function as the <code>python_callable</code> and the operator will correctly await it, enabling async I/O patterns without needing a custom operator. (#60268)</p>
+<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-py" data-lang="py"><span class="line"><span class="cl"><span class="nd">@task</span><span class="p">(</span><span class="n">show_return_value_in_logs</span><span class="o">=</span><span class="kc">False</span><span class="p">)</span>
+</span></span><span class="line"><span class="cl"><span class="k">async</span> <span class="k">def</span> <span class="nf">load_xml_files</span><span class="p">(</span><span class="n">files</span><span class="p">):</span>
+</span></span><span class="line"><span class="cl"> <span class="kn">import</span> <span class="nn">asyncio</span>
+</span></span><span class="line"><span class="cl"> <span class="kn">from</span> <span class="nn">io</span> <span class="kn">import</span> <span class="n">BytesIO</span>
+</span></span><span class="line"><span class="cl"> <span class="kn">from</span> <span class="nn">more_itertools</span> <span class="kn">import</span> <span class="n">chunked</span>
+</span></span><span class="line"><span class="cl"> <span class="kn">from</span> <span class="nn">os</span> <span class="kn">import</span> <span class="n">cpu_count</span>
+</span></span><span class="line"><span class="cl"> <span class="kn">from</span> <span class="nn">tenacity</span> <span class="kn">import</span> <span class="n">retry</span><span class="p">,</span> <span class="n">stop_after_attempt</span><span class="p">,</span> <span class="n">wait_fixed</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl"> <span class="kn">from</span> <span class="nn">airflow.providers.sftp.hooks.sftp</span> <span class="kn">import</span> <span class="n">SFTPClientPool</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl"> <span class="nb">print</span><span class="p">(</span><span class="s2">"number of files:"</span><span class="p">,</span> <span class="nb">len</span><span class="p">(</span><span class="n">files</span><span class="p">))</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl"> <span class="k">async</span> <span class="k">with</span> <span class="n">SFTPClientPool</span><span class="p">(</span><span class="n">sftp_conn_id</span><span class="o">=</span><span class="n">sftp_conn</span><span class="p">,</span> <span class="n">pool_size</span><span class="o">=</span><span class="n">cpu_count</span><span class="p">())</span> <span class="k">as</span> <span class="n">pool</span><span class="p">:</span>
+</span></span><span class="line"><span class="cl"> <span class="nd">@retry</span><span class="p">(</span><span class="n">stop</span><span class="o">=</span><span class="n">stop_after_attempt</span><span class="p">(</span><span class="mi">3</span><span class="p">),</span> <span class="n">wait</span><span class="o">=</span><span class="n">wait_fixed</span><span class="p">(</span><span class="mi">5</span><span class="p">))</span>
+</span></span><span class="line"><span class="cl"> <span class="k">async</span> <span class="k">def</span> <span class="nf">download_file</span><span class="p">(</span><span class="n">file</span><span class="p">):</span>
+</span></span><span class="line"><span class="cl"> <span class="k">async</span> <span class="k">with</span> <span class="n">pool</span><span class="o">.</span><span class="n">get_sftp_client</span><span class="p">()</span> <span class="k">as</span> <span class="n">sftp</span><span class="p">:</span>
+</span></span><span class="line"><span class="cl"> <span class="nb">print</span><span class="p">(</span><span class="s2">"downloading:"</span><span class="p">,</span> <span class="n">file</span><span class="p">)</span>
+</span></span><span class="line"><span class="cl"> <span class="n">buffer</span> <span class="o">=</span> <span class="n">BytesIO</span><span class="p">()</span>
+</span></span><span class="line"><span class="cl"> <span class="k">async</span> <span class="k">with</span> <span class="n">sftp</span><span class="o">.</span><span class="n">open</span><span class="p">(</span><span class="n">file</span><span class="p">,</span> <span class="n">encoding</span><span class="o">=</span><span class="n">xml_encoding</span><span class="p">)</span> <span class="k">as</span> <span class="n">remote_file</span><span class="p">:</span>
+</span></span><span class="line"><span class="cl"> <span class="n">data</span> <span class="o">=</span> <span class="k">await</span> <span class="n">remote_file</span><span class="o">.</span><span class="n">read</span><span class="p">()</span>
+</span></span><span class="line"><span class="cl"> <span class="n">buffer</span><span class="o">.</span><span class="n">write</span><span class="p">(</span><span class="n">data</span><span class="o">.</span><span class="n">encode</span><span class="p">(</span><span class="n">xml_encoding</span><span class="p">))</span>
+</span></span><span class="line"><span class="cl"> <span class="n">buffer</span><span class="o">.</span><span class="n">seek</span><span class="p">(</span><span class="mi">0</span><span class="p">)</span>
+</span></span><span class="line"><span class="cl"> <span class="k">return</span> <span class="n">buffer</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="n">batch</span> <span class="ow">in</span> <span class="n">chunked</span><span class="p">(</span><span class="n">files</span><span class="p">,</span> <span class="n">cpu_count</span><span class="p">()</span> <span class="o">*</span> <span class="mi">2</span><span class="p">):</span>
+</span></span><span class="line"><span class="cl"> <span class="n">tasks</span> <span class="o">=</span> <span class="p">[</span><span class="n">asyncio</span><span class="o">.</span><span class="n">create_task</span><span class="p">(</span><span class="n">download_file</span><span class="p">(</span><span class="n">f</span><span class="p">))</span> <span class="k">for</span> <span class="n">f</span> <span class="ow">in</span> <span class="n">batch</span><span class="p">]</span>
+</span></span><span class="line"><span class="cl">
+</span></span><span class="line"><span class="cl"> <span class="c1"># Wait for this batch to finish before starting the next</span>
+</span></span><span class="line"><span class="cl"> <span class="k">for</span> <span class="n">task</span> <span class="ow">in</span> <span class="n">asyncio</span><span class="o">.</span><span class="n">as_completed</span><span class="p">(</span><span class="n">tasks</span><span class="p">):</span>
+</span></span><span class="line"><span class="cl"> <span class="n">result</span> <span class="o">=</span> <span class="k">await</span> <span class="n">task</span>
+</span></span><span class="line"><span class="cl"> <span class="c1"># Do something with result or accumulate it and return it as an XCom</span>
+</span></span></code></pre></div><h1 id="updated-securiy-model">Updated securiy model</h1>
+<p>We are working on improving isolation and improving security of Airflow deployments and in order to make our users better informed of what expectations they should have for Airflow security, we updated the security model to reflect changes implemented in Airflow 3.2.0 and explain future improvements that we work on in this area. See more: <a href="https://airflow.apache.org/docs/apache-airflow/stable/security/security_model.html">Airflow Security Model</a>.</p>
+<h1 id="-community-appreciation">🙏 Community Appreciation</h1>
+<p>This release represents the collaborative effort of hundreds of contributors from around the world. Special thanks to our release manager and all the developers, documentarians, testers, and community members who made Airflow 3.2.0 possible.</p>
+<p>Thanks to contributors like you, the Airflow project continues to thrive. Whether you’re filing issues, submitting PRs, improving documentation, or helping others in the community, every contribution matters.</p>
+<h1 id="-get-involved">🔗 Get Involved</h1>
+<ul>
+<li><strong>Try the Release</strong>: Upgrade your development environment and explore the new features</li>
+<li><strong>Join the Conversation</strong>: Connect with us on <a href="https://s.apache.org/airflow-slack">Slack</a> and the <a href="https://airflow.apache.org/community/">dev mailing list</a></li>
+<li><strong>Contribute</strong>: Check out our <a href="https://github.com/apache/airflow/blob/main/contributing-docs/README.rst">contribution guide</a></li>
+<li><strong>Provide Feedback</strong>: Share your experiences and suggestions on <a href="https://github.com/apache/airflow">GitHub</a></li>
+</ul>
+<p>Apache Airflow 3.2.0 marks a new chapter in data-aware, partition-driven workflow orchestration. We can’t wait to see what you build with it!</p>
+]]></content>
+ </entry>
+
<entry>
<title>Introducing the Apache Airflow Registry</title>
<link href="/blog/airflow-registry/" rel="alternate"/>
<id>/blog/airflow-registry/</id>
<published>2026-03-19T00:00:00Z</published>
- <updated>2026-04-07T20:24:10Z</updated>
+ <updated>2026-04-07T21:16:22Z</updated>
<author>
<name>Apache Airflow</name>
</author>
@@ -98,7 +312,7 @@
<link href="/blog/airflow-survey-2025/" rel="alternate"/>
<id>/blog/airflow-survey-2025/</id>
<published>2026-01-22T00:00:00Z</published>
- <updated>2026-04-07T20:24:10Z</updated>
+ <updated>2026-04-07T21:16:22Z</updated>
<author>
<name>Apache Airflow</name>
</author>
@@ -120,7 +334,7 @@
<link href="/blog/airflowctl-0.1.0/" rel="alternate"/>
<id>/blog/airflowctl-0.1.0/</id>
<published>2025-10-15T00:00:00Z</published>
- <updated>2026-04-07T20:24:10Z</updated>
+ <updated>2026-04-07T21:16:22Z</updated>
<author>
<name>Apache Airflow</name>
</author>
@@ -282,7 +496,7 @@ The secure CLI foundation lays the groundwork for Airflow’s next generation. A
<link href="/blog/airflow-3.1.0/" rel="alternate"/>
<id>/blog/airflow-3.1.0/</id>
<published>2025-09-25T00:00:00Z</published>
- <updated>2026-04-07T20:24:10Z</updated>
+ <updated>2026-04-07T21:16:22Z</updated>
<author>
<name>Apache Airflow</name>
</author>
@@ -467,7 +681,7 @@ human-centered. We can’t wait to see what you build with it!</p>
<link href="/blog/airflow-three-point-oh-is-here/" rel="alternate"/>
<id>/blog/airflow-three-point-oh-is-here/</id>
<published>2025-04-22T00:00:00Z</published>
- <updated>2026-04-07T20:24:10Z</updated>
+ <updated>2026-04-07T21:16:22Z</updated>
<author>
<name>Apache Airflow</name>
</author>
@@ -873,7 +1087,7 @@ Let’s build the future of data orchestration—together.</p>
<link href="/blog/airflow-survey-2024/" rel="alternate"/>
<id>/blog/airflow-survey-2024/</id>
<published>2025-02-27T00:00:00Z</published>
- <updated>2026-04-07T20:24:10Z</updated>
+ <updated>2026-04-07T21:16:22Z</updated>
<author>
<name>Apache Airflow</name>
</author>
@@ -895,7 +1109,7 @@ Let’s build the future of data orchestration—together.</p>
<link href="/blog/airflow-2.10.0/" rel="alternate"/>
<id>/blog/airflow-2.10.0/</id>
<published>2024-08-08T00:00:00Z</published>
- <updated>2026-04-07T20:24:10Z</updated>
+ <updated>2026-04-07T21:16:22Z</updated>
<author>
<name>Apache Airflow</name>
</author>
@@ -1019,7 +1233,7 @@ executor = 'LocalExecutor,KubernetesExecutor,my.custom.module.ExecutorClass:
<link href="/blog/airflow-2.9.0/" rel="alternate"/>
<id>/blog/airflow-2.9.0/</id>
<published>2024-04-08T00:00:00Z</published>
- <updated>2026-04-07T20:24:10Z</updated>
+ <updated>2026-04-07T21:16:22Z</updated>
<author>
<name>Apache Airflow</name>
</author>
@@ -1141,7 +1355,7 @@ xcom_objectstorage_compression = gzip
<link href="/blog/fab-oid-vulnerability/" rel="alternate"/>
<id>/blog/fab-oid-vulnerability/</id>
<published>2024-02-26T00:00:00Z</published>
- <updated>2026-04-07T20:24:10Z</updated>
+ <updated>2026-04-07T21:16:22Z</updated>
<author>
<name>Apache Airflow</name>
</author>
@@ -1228,7 +1442,7 @@ where Flask AppBuilder is also used.</p>
<link href="/blog/airflow-2.8.0/" rel="alternate"/>
<id>/blog/airflow-2.8.0/</id>
<published>2023-12-15T00:00:00Z</published>
- <updated>2026-04-07T20:24:10Z</updated>
+ <updated>2026-04-07T21:16:22Z</updated>
<author>
<name>Apache Airflow</name>
</author>
@@ -1309,7 +1523,7 @@ We care for your security, and “secure by default” is one of the thi
<link href="/blog/airflow-survey-2023/" rel="alternate"/>
<id>/blog/airflow-survey-2023/</id>
<published>2023-09-21T00:00:00Z</published>
- <updated>2026-04-07T20:24:10Z</updated>
+ <updated>2026-04-07T21:16:22Z</updated>
<author>
<name>Apache Airflow</name>
</author>
@@ -1328,7 +1542,7 @@ We care for your security, and “secure by default” is one of the thi
<link href="/blog/airflow-2.7.0/" rel="alternate"/>
<id>/blog/airflow-2.7.0/</id>
<published>2023-08-18T00:00:00Z</published>
- <updated>2026-04-07T20:24:10Z</updated>
+ <updated>2026-04-07T21:16:22Z</updated>
<author>
<name>Apache Airflow</name>
</author>
@@ -1391,7 +1605,7 @@ The following providers have been moved and require certain minimum providers ve
<link href="/blog/introducing_setup_teardown/" rel="alternate"/>
<id>/blog/introducing_setup_teardown/</id>
<published>2023-08-18T00:00:00Z</published>
- <updated>2026-04-07T20:24:10Z</updated>
+ <updated>2026-04-07T21:16:22Z</updated>
<author>
<name>Apache Airflow</name>
</author>
@@ -1440,7 +1654,7 @@ The following providers have been moved and require certain minimum providers ve
<link href="/blog/airflow-2.6.0/" rel="alternate"/>
<id>/blog/airflow-2.6.0/</id>
<published>2023-04-30T00:00:00Z</published>
- <updated>2026-04-07T20:24:10Z</updated>
+ <updated>2026-04-07T21:16:22Z</updated>
<author>
<name>Apache Airflow</name>
</author>
@@ -1500,7 +1714,7 @@ The following providers have been moved and require certain minimum providers ve
<link href="/blog/airflow-2.5.0/" rel="alternate"/>
<id>/blog/airflow-2.5.0/</id>
<published>2022-12-02T00:00:00Z</published>
- <updated>2026-04-07T20:24:10Z</updated>
+ <updated>2026-04-07T21:16:22Z</updated>
<author>
<name>Apache Airflow</name>
</author>
@@ -1536,7 +1750,7 @@ c. Everything runs in one process, so you can put a breakpoint in your IDE, and
<link href="/blog/airflow-2.4.0/" rel="alternate"/>
<id>/blog/airflow-2.4.0/</id>
<published>2022-09-19T00:00:00Z</published>
- <updated>2026-04-07T20:24:10Z</updated>
+ <updated>2026-04-07T21:16:22Z</updated>
<author>
<name>Apache Airflow</name>
</author>
@@ -1641,7 +1855,7 @@ c. Everything runs in one process, so you can put a breakpoint in your IDE, and
<link href="/blog/airflow-survey-2022/" rel="alternate"/>
<id>/blog/airflow-survey-2022/</id>
<published>2022-06-17T00:00:00Z</published>
- <updated>2026-04-07T20:24:10Z</updated>
+ <updated>2026-04-07T21:16:22Z</updated>
<author>
<name>Apache Airflow</name>
</author>
@@ -3332,7 +3546,7 @@ c. Everything runs in one process, so you can put a breakpoint in your IDE, and
<link href="/blog/airflow_summit_2022/" rel="alternate"/>
<id>/blog/airflow_summit_2022/</id>
<published>2022-05-16T00:00:00Z</published>
- <updated>2026-04-07T20:24:10Z</updated>
+ <updated>2026-04-07T21:16:22Z</updated>
<author>
<name>Apache Airflow</name>
</author>
@@ -3357,7 +3571,7 @@ communities to watch the event and network.</p>
<link href="/blog/airflow-2.3.0/" rel="alternate"/>
<id>/blog/airflow-2.3.0/</id>
<published>2022-04-30T00:00:00Z</published>
- <updated>2026-04-07T20:24:10Z</updated>
+ <updated>2026-04-07T21:16:22Z</updated>
<author>
<name>Apache Airflow</name>
</author>
@@ -3459,7 +3673,7 @@ Sade’s “Smooth Operator”. Enjoy!</li>
<link href="/blog/airflow-2.2.0/" rel="alternate"/>
<id>/blog/airflow-2.2.0/</id>
<published>2021-10-11T00:00:00Z</published>
- <updated>2026-04-07T20:24:10Z</updated>
+ <updated>2026-04-07T21:16:22Z</updated>
<author>
<name>Apache Airflow</name>
</author>
@@ -3515,7 +3729,7 @@ Sade’s “Smooth Operator”. Enjoy!</li>
<link href="/blog/airflow_summit_2021/" rel="alternate"/>
<id>/blog/airflow_summit_2021/</id>
<published>2021-03-21T00:00:00Z</published>
- <updated>2026-04-07T20:24:10Z</updated>
+ <updated>2026-04-07T21:16:22Z</updated>
<author>
<name>Apache Airflow</name>
</author>
@@ -3537,7 +3751,7 @@ participate in its development.</p>
<link href="/blog/airflow-survey-2020/" rel="alternate"/>
<id>/blog/airflow-survey-2020/</id>
<published>2021-03-09T00:00:00Z</published>
- <updated>2026-04-07T20:24:10Z</updated>
+ <updated>2026-04-07T21:16:22Z</updated>
<author>
<name>Apache Airflow</name>
</author>
@@ -4862,7 +5076,7 @@ to share their experience and tools.</p>
<link href="/blog/airflow-two-point-oh-is-here/" rel="alternate"/>
<id>/blog/airflow-two-point-oh-is-here/</id>
<published>2020-12-17T00:00:00Z</published>
- <updated>2026-04-07T20:24:10Z</updated>
+ <updated>2026-04-07T21:16:22Z</updated>
<author>
<name>Apache Airflow</name>
</author>
@@ -4956,7 +5170,7 @@ Docs on <a href="http://airflow.apache.org/docs/apache-airflow-providers/package
<link href="/blog/experience-with-airflow-as-an-outreachy-intern/" rel="alternate"/>
<id>/blog/experience-with-airflow-as-an-outreachy-intern/</id>
<published>2020-08-30T00:00:00Z</published>
- <updated>2026-04-07T20:24:10Z</updated>
+ <updated>2026-04-07T21:16:22Z</updated>
<author>
<name>Apache Airflow</name>
</author>
@@ -5017,7 +5231,7 @@ community that has been made my summer, one to remember.</p>
<link href="/blog/airflow-1.10.12/" rel="alternate"/>
<id>/blog/airflow-1.10.12/</id>
<published>2020-08-25T00:00:00Z</published>
- <updated>2026-04-07T20:24:10Z</updated>
+ <updated>2026-04-07T21:16:22Z</updated>
<author>
<name>Apache Airflow</name>
</author>
@@ -5138,7 +5352,7 @@ William Tran, Xiaodong Deng, YI FU, Zikun Zhu, dewaldabrie, pulsar314, retornam,
<link href="/blog/apache-airflow-for-newcomers/" rel="alternate"/>
<id>/blog/apache-airflow-for-newcomers/</id>
<published>2020-08-17T00:00:00Z</published>
- <updated>2026-04-07T20:24:10Z</updated>
+ <updated>2026-04-07T21:16:22Z</updated>
<author>
<name>Apache Airflow</name>
</author>
@@ -5251,7 +5465,7 @@ and <a href="https://github.com/turbaszek">Tomek</a> for all their support. I&rs
<link href="/blog/implementing-stable-api-for-apache-airflow/" rel="alternate"/>
<id>/blog/implementing-stable-api-for-apache-airflow/</id>
<published>2020-07-19T00:00:00Z</published>
- <updated>2026-04-07T20:24:10Z</updated>
+ <updated>2026-04-07T21:16:22Z</updated>
<author>
<name>Apache Airflow</name>
</author>
@@ -5337,7 +5551,7 @@ wonderful reviews. I’m grateful.</p>
<link href="/blog/airflow-1.10.10/" rel="alternate"/>
<id>/blog/airflow-1.10.10/</id>
<published>2020-04-09T00:00:00Z</published>
- <updated>2026-04-07T20:24:10Z</updated>
+ <updated>2026-04-07T21:16:22Z</updated>
<author>
<name>Apache Airflow</name>
</author>
@@ -5480,7 +5694,7 @@ objc[1873]: +[__NSPlaceholderDate initialize] may have been in progress in anoth
<link href="/blog/airflow-1.10.8-1.10.9/" rel="alternate"/>
<id>/blog/airflow-1.10.8-1.10.9/</id>
<published>2020-02-23T00:00:00Z</published>
- <updated>2026-04-07T20:24:10Z</updated>
+ <updated>2026-04-07T21:16:22Z</updated>
<author>
<name>Apache Airflow</name>
</author>
@@ -5535,7 +5749,7 @@ for 1.10.* series but would no longer be available from Airflow 2.0</p>
<link href="/blog/experience-in-google-season-of-docs-2019-with-apache-airflow/" rel="alternate"/>
<id>/blog/experience-in-google-season-of-docs-2019-with-apache-airflow/</id>
<published>2019-12-20T00:00:00Z</published>
- <updated>2026-04-07T20:24:10Z</updated>
+ <updated>2026-04-07T21:16:22Z</updated>
<author>
<name>Apache Airflow</name>
</author>
@@ -5633,7 +5847,7 @@ After a lot of trial and error, we arrived at a version with which both of us co
<link href="/blog/airflow-survey/" rel="alternate"/>
<id>/blog/airflow-survey/</id>
<published>2019-12-11T00:00:00Z</published>
- <updated>2026-04-07T20:24:10Z</updated>
+ <updated>2026-04-07T21:16:22Z</updated>
<author>
<name>Apache Airflow</name>
</author>
@@ -6436,7 +6650,7 @@ declare DAGs.</p>
<link href="/blog/announcing-new-website/" rel="alternate"/>
<id>/blog/announcing-new-website/</id>
<published>2019-12-11T00:00:00Z</published>
- <updated>2026-04-07T20:24:10Z</updated>
+ <updated>2026-04-07T21:16:22Z</updated>
<author>
<name>Apache Airflow</name>
</author>
@@ -6468,7 +6682,7 @@ and that its improved accessibility increases adoption and use of Apache Airflow
<link href="/blog/apache-con-europe-2019-thoughts-and-insights-by-airflow-committers/" rel="alternate"/>
<id>/blog/apache-con-europe-2019-thoughts-and-insights-by-airflow-committers/</id>
<published>2019-11-22T00:00:00Z</published>
- <updated>2026-04-07T20:24:10Z</updated>
+ <updated>2026-04-07T21:16:22Z</updated>
<author>
<name>Apache Airflow</name>
</author>
@@ -6483,7 +6697,7 @@ and that its improved accessibility increases adoption and use of Apache Airflow
<link href="/blog/documenting-using-local-development-environments/" rel="alternate"/>
<id>/blog/documenting-using-local-development-environments/</id>
<published>2019-11-22T00:00:00Z</published>
- <updated>2026-04-07T20:24:10Z</updated>
+ <updated>2026-04-07T21:16:22Z</updated>
<author>
<name>Apache Airflow</name>
</author>
@@ -6522,7 +6736,7 @@ a team for 3 months.</p>
<link href="/blog/its-a-breeze-to-develop-apache-airflow/" rel="alternate"/>
<id>/blog/its-a-breeze-to-develop-apache-airflow/</id>
<published>2019-11-22T00:00:00Z</published>
- <updated>2026-04-07T20:24:10Z</updated>
+ <updated>2026-04-07T21:16:22Z</updated>
<author>
<name>Apache Airflow</name>
</author>
diff --git a/blog/introducing_setup_teardown/index.html b/blog/introducing_setup_teardown/index.html
index cb036d4454..f146315eaa 100644
--- a/blog/introducing_setup_teardown/index.html
+++ b/blog/introducing_setup_teardown/index.html
@@ -31,13 +31,13 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2023-08-18T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-04-07T20:24:10+05:30">
+ <meta property="article:modified_time" content="2026-04-07T21:16:22+05:30">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="Introducing Setup and Teardown tasks">
<meta itemprop="description" content="An introduction to Setup and Teardown tasks, which are new in Apache Airflow 2.7.0">
<meta itemprop="datePublished" content="2023-08-18T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="678">
<meta itemprop="image" content="/images/feature-image.png">
diff --git a/blog/its-a-breeze-to-develop-apache-airflow/index.html b/blog/its-a-breeze-to-develop-apache-airflow/index.html
index c892090639..ca25607f1e 100644
--- a/blog/its-a-breeze-to-develop-apache-airflow/index.html
+++ b/blog/its-a-breeze-to-develop-apache-airflow/index.html
@@ -31,14 +31,14 @@
<meta property="og:type" content="article">
<meta property="article:section" content="blog">
<meta property="article:published_time" content="2019-11-22T00:00:00+00:00">
- <meta property="article:modified_time" content="2026-04-07T20:24:10+05:30">
+ <meta property="article:modified_time" content="2026-04-07T21:16:22+05:30">
<meta property="article:tag" content="Development">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="It's a "Breeze" to develop Apache Airflow">
<meta itemprop="description" content="A Principal Software Engineer's journey to developer productivity. Learn how Jarek and his team sped up and simplified Airflow development for the community.">
<meta itemprop="datePublished" content="2019-11-22T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="124">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Development">
diff --git a/blog/tags/airflow-summit/index.html b/blog/tags/airflow-summit/index.html
index 7d78e24712..a07fc97a2d 100644
--- a/blog/tags/airflow-summit/index.html
+++ b/blog/tags/airflow-summit/index.html
@@ -35,7 +35,7 @@
<meta itemprop="name" content="Airflow Summit">
<meta itemprop="description" content="Platform created by the community to programmatically author, schedule and monitor workflows.">
<meta itemprop="datePublished" content="2022-05-16T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="image" content="/images/feature-image.png">
diff --git a/blog/tags/airflow-summit/index.xml b/blog/tags/airflow-summit/index.xml
index 413bbaf250..77f166d1b8 100644
--- a/blog/tags/airflow-summit/index.xml
+++ b/blog/tags/airflow-summit/index.xml
@@ -6,7 +6,7 @@
<description>Recent content in Airflow Summit on Apache Airflow</description>
<generator>Hugo</generator>
<language>en</language>
- <lastBuildDate>Tue, 07 Apr 2026 20:24:10 +0530</lastBuildDate>
+ <lastBuildDate>Tue, 07 Apr 2026 21:16:22 +0530</lastBuildDate>
<atom:link href="/blog/tags/airflow-summit/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Airflow Summit 2022</title>
diff --git a/blog/tags/community/index.html b/blog/tags/community/index.html
index a8d0ab6cc8..0549c383e5 100644
--- a/blog/tags/community/index.html
+++ b/blog/tags/community/index.html
@@ -35,7 +35,7 @@
<meta itemprop="name" content="Community">
<meta itemprop="description" content="Platform created by the community to programmatically author, schedule and monitor workflows.">
<meta itemprop="datePublished" content="2026-03-19T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="image" content="/images/feature-image.png">
diff --git a/blog/tags/community/index.xml b/blog/tags/community/index.xml
index 9c4840a212..9dee899975 100644
--- a/blog/tags/community/index.xml
+++ b/blog/tags/community/index.xml
@@ -6,7 +6,7 @@
<description>Recent content in Community on Apache Airflow</description>
<generator>Hugo</generator>
<language>en</language>
- <lastBuildDate>Tue, 07 Apr 2026 20:24:10 +0530</lastBuildDate>
+ <lastBuildDate>Tue, 07 Apr 2026 21:16:22 +0530</lastBuildDate>
<atom:link href="/blog/tags/community/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Introducing the Apache Airflow Registry</title>
diff --git a/blog/tags/development/index.html b/blog/tags/development/index.html
index b9910f1c54..aaf933303a 100644
--- a/blog/tags/development/index.html
+++ b/blog/tags/development/index.html
@@ -35,7 +35,7 @@
<meta itemprop="name" content="Development">
<meta itemprop="description" content="Platform created by the community to programmatically author, schedule and monitor workflows.">
<meta itemprop="datePublished" content="2019-11-22T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="image" content="/images/feature-image.png">
diff --git a/blog/tags/development/index.xml b/blog/tags/development/index.xml
index 1d3bc83816..291c6a01c9 100644
--- a/blog/tags/development/index.xml
+++ b/blog/tags/development/index.xml
@@ -6,7 +6,7 @@
<description>Recent content in Development on Apache Airflow</description>
<generator>Hugo</generator>
<language>en</language>
- <lastBuildDate>Tue, 07 Apr 2026 20:24:10 +0530</lastBuildDate>
+ <lastBuildDate>Tue, 07 Apr 2026 21:16:22 +0530</lastBuildDate>
<atom:link href="/blog/tags/development/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Documenting using local development environment</title>
diff --git a/blog/tags/documentation/index.html b/blog/tags/documentation/index.html
index d7ad9a1838..78914c2530 100644
--- a/blog/tags/documentation/index.html
+++ b/blog/tags/documentation/index.html
@@ -35,7 +35,7 @@
<meta itemprop="name" content="Documentation">
<meta itemprop="description" content="Platform created by the community to programmatically author, schedule and monitor workflows.">
<meta itemprop="datePublished" content="2019-12-20T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="image" content="/images/feature-image.png">
diff --git a/blog/tags/documentation/index.xml b/blog/tags/documentation/index.xml
index 23910f0a5d..3f77295851 100644
--- a/blog/tags/documentation/index.xml
+++ b/blog/tags/documentation/index.xml
@@ -6,7 +6,7 @@
<description>Recent content in Documentation on Apache Airflow</description>
<generator>Hugo</generator>
<language>en</language>
- <lastBuildDate>Tue, 07 Apr 2026 20:24:10 +0530</lastBuildDate>
+ <lastBuildDate>Tue, 07 Apr 2026 21:16:22 +0530</lastBuildDate>
<atom:link href="/blog/tags/documentation/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Experience in Google Season of Docs 2019 with Apache Airflow</title>
diff --git a/blog/tags/release/index.html b/blog/tags/release/index.html
index 7ebf5c3f3c..05169f98d5 100644
--- a/blog/tags/release/index.html
+++ b/blog/tags/release/index.html
@@ -34,8 +34,8 @@
<meta itemprop="name" content="Release">
<meta itemprop="description" content="Platform created by the community to programmatically author, schedule and monitor workflows.">
- <meta itemprop="datePublished" content="2025-10-15T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="datePublished" content="2026-04-07T00:00:00+00:00">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="image" content="/images/feature-image.png">
@@ -576,6 +576,43 @@
<div class="list-item list-item--wide">
+<div class="card">
+ <div class="box-event__blogpost">
+ <div class="box-event__blogpost--metadata">
+ <div class="tags-container">
+
+
+ <a class="tag" href="/blog/tags/release/">Release</a>
+
+
+ </div>
+ <span class="bodytext__medium--brownish-grey box-event__blogpost--date">Tue, Apr 7, 2026</span>
+ </div>
+ <p class="box-event__blogpost--header">
+ <a href="/blog/airflow-3.2.0/">
+ Apache Airflow 3.2.0: Data-Aware Workflows at Scale
+ </a>
+ </p>
+
+ <p class="box-event__blogpost--author">Rahul Vats</p>
+
+ <p class="box-event__blogpost--description">Apache Airflow 3.2.0 introduces Asset partitioning for granular pipeline orchestration, multi-team deployments for enterprise scale, synchronous deadline alert callbacks, and continued progress toward full Task SDK separation.</p>
+ <div class="mt-auto">
+ <a href="/blog/airflow-3.2.0/">
+
+
+<button class="btn-hollow btn-blue bodytext__medium--cerulean-blue" >Read more</button>
+
+ </a>
+ </div>
+ </div>
+</div>
+
+ </div>
+
+ <div class="list-item list-item--wide">
+
+
<div class="card">
<div class="box-event__blogpost">
<div class="box-event__blogpost--metadata">
diff --git a/blog/tags/release/index.xml b/blog/tags/release/index.xml
index 35e8832e0f..86368fa5fc 100644
--- a/blog/tags/release/index.xml
+++ b/blog/tags/release/index.xml
@@ -6,8 +6,15 @@
<description>Recent content in Release on Apache Airflow</description>
<generator>Hugo</generator>
<language>en</language>
- <lastBuildDate>Tue, 07 Apr 2026 20:24:10 +0530</lastBuildDate>
+ <lastBuildDate>Tue, 07 Apr 2026 21:16:22 +0530</lastBuildDate>
<atom:link href="/blog/tags/release/index.xml" rel="self" type="application/rss+xml" />
+ <item>
+ <title>Apache Airflow 3.2.0: Data-Aware Workflows at Scale</title>
+ <link>/blog/airflow-3.2.0/</link>
+ <pubDate>Tue, 07 Apr 2026 00:00:00 +0000</pubDate>
+ <guid>/blog/airflow-3.2.0/</guid>
+ <description><p>We&rsquo;re proud to announce the release of <strong>Apache Airflow 3.2.0</strong>! Airflow 3.1 puts humans at the center of automated workflows. 3.2 brings that same precision to data: Asset partitioning for granular pipeline orchestration, multi-team deployments for enterprise scale, synchronous deadline alert callbacks, and continued progress toward full Task SDK separation.</p>
<p><strong>Details</strong>:</p& [...]
+ </item>
<item>
<title>Apache Airflow CTL aka airflowctl 0.1.0</title>
<link>/blog/airflowctl-0.1.0/</link>
diff --git a/blog/tags/rest-api/index.html b/blog/tags/rest-api/index.html
index ff53b63727..0c2e55750a 100644
--- a/blog/tags/rest-api/index.html
+++ b/blog/tags/rest-api/index.html
@@ -35,7 +35,7 @@
<meta itemprop="name" content="REST API">
<meta itemprop="description" content="Platform created by the community to programmatically author, schedule and monitor workflows.">
<meta itemprop="datePublished" content="2020-07-19T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="image" content="/images/feature-image.png">
diff --git a/blog/tags/rest-api/index.xml b/blog/tags/rest-api/index.xml
index 7b9c7577b3..20086d1c76 100644
--- a/blog/tags/rest-api/index.xml
+++ b/blog/tags/rest-api/index.xml
@@ -6,7 +6,7 @@
<description>Recent content in REST API on Apache Airflow</description>
<generator>Hugo</generator>
<language>en</language>
- <lastBuildDate>Tue, 07 Apr 2026 20:24:10 +0530</lastBuildDate>
+ <lastBuildDate>Tue, 07 Apr 2026 21:16:22 +0530</lastBuildDate>
<atom:link href="/blog/tags/rest-api/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Implementing Stable API for Apache Airflow</title>
diff --git a/blog/tags/survey/index.html b/blog/tags/survey/index.html
index 2d252d5148..2535a8dc0d 100644
--- a/blog/tags/survey/index.html
+++ b/blog/tags/survey/index.html
@@ -35,7 +35,7 @@
<meta itemprop="name" content="Survey">
<meta itemprop="description" content="Platform created by the community to programmatically author, schedule and monitor workflows.">
<meta itemprop="datePublished" content="2026-01-22T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="image" content="/images/feature-image.png">
diff --git a/blog/tags/survey/index.xml b/blog/tags/survey/index.xml
index 66849a6075..4d2fbac95f 100644
--- a/blog/tags/survey/index.xml
+++ b/blog/tags/survey/index.xml
@@ -6,7 +6,7 @@
<description>Recent content in Survey on Apache Airflow</description>
<generator>Hugo</generator>
<language>en</language>
- <lastBuildDate>Tue, 07 Apr 2026 20:24:10 +0530</lastBuildDate>
+ <lastBuildDate>Tue, 07 Apr 2026 21:16:22 +0530</lastBuildDate>
<atom:link href="/blog/tags/survey/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Airflow Survey 2025</title>
diff --git a/blog/tags/users/index.html b/blog/tags/users/index.html
index a4d28acdd7..fb6b1ba756 100644
--- a/blog/tags/users/index.html
+++ b/blog/tags/users/index.html
@@ -35,7 +35,7 @@
<meta itemprop="name" content="Users">
<meta itemprop="description" content="Platform created by the community to programmatically author, schedule and monitor workflows.">
<meta itemprop="datePublished" content="2026-01-22T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="image" content="/images/feature-image.png">
diff --git a/blog/tags/users/index.xml b/blog/tags/users/index.xml
index 1db88c0c6f..bb4446ca53 100644
--- a/blog/tags/users/index.xml
+++ b/blog/tags/users/index.xml
@@ -6,7 +6,7 @@
<description>Recent content in Users on Apache Airflow</description>
<generator>Hugo</generator>
<language>en</language>
- <lastBuildDate>Tue, 07 Apr 2026 20:24:10 +0530</lastBuildDate>
+ <lastBuildDate>Tue, 07 Apr 2026 21:16:22 +0530</lastBuildDate>
<atom:link href="/blog/tags/users/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Airflow Survey 2025</title>
diff --git a/blog/tags/vulnerabilities/index.html b/blog/tags/vulnerabilities/index.html
index e1ca3c3890..9eda0500b7 100644
--- a/blog/tags/vulnerabilities/index.html
+++ b/blog/tags/vulnerabilities/index.html
@@ -35,7 +35,7 @@
<meta itemprop="name" content="Vulnerabilities">
<meta itemprop="description" content="Platform created by the community to programmatically author, schedule and monitor workflows.">
<meta itemprop="datePublished" content="2024-02-26T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="image" content="/images/feature-image.png">
diff --git a/blog/tags/vulnerabilities/index.xml b/blog/tags/vulnerabilities/index.xml
index 6c379678d7..52e1e8a574 100644
--- a/blog/tags/vulnerabilities/index.xml
+++ b/blog/tags/vulnerabilities/index.xml
@@ -6,7 +6,7 @@
<description>Recent content in Vulnerabilities on Apache Airflow</description>
<generator>Hugo</generator>
<language>en</language>
- <lastBuildDate>Tue, 07 Apr 2026 20:24:10 +0530</lastBuildDate>
+ <lastBuildDate>Tue, 07 Apr 2026 21:16:22 +0530</lastBuildDate>
<atom:link href="/blog/tags/vulnerabilities/index.xml" rel="self" type="application/rss+xml" />
<item>
<title>Vulnerability in long deprecated OpenID authentication method in Flask AppBuilder</title>
diff --git a/code-of-conduct/index.html b/code-of-conduct/index.html
index 510ad31133..5f49040f33 100644
--- a/code-of-conduct/index.html
+++ b/code-of-conduct/index.html
@@ -36,7 +36,7 @@ Airflow Slack Guidelines Airflow Slack abides by The Apache Foundation’s Code
<meta itemprop="name" content="Code of Conduct">
<meta itemprop="description" content="Community Code of Conduct All Airflow Community groups abide by The Apache Software Foundation’s (ASF) Code of Conduct . Below, please find a breakdown of how that code applies to Airflow Slack and in-person Meetups
Airflow Slack Guidelines Airflow Slack abides by The Apache Foundation’s Code of Conduct . In addition to those primary guidelines, these policies are specifically for Airflow Slack. The Airflow Slack community contains 40,000+ members and continues to grow. Because this community is run by the very practitioners who build in Airflow daily, our members feel a sense of camaraderie, ownership, and comfortability here. ">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="1576">
<meta itemprop="image" content="/images/feature-image.png">
diff --git a/community/index.html b/community/index.html
index 65ea673f75..c4acbb73f7 100644
--- a/community/index.html
+++ b/community/index.html
@@ -34,7 +34,7 @@
<meta itemprop="name" content="Community">
<meta itemprop="description" content="Want to contribute? Join the Dev list The Dev list is the preferred channel for announcements, proposals and votes. Manage your subscription:">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="560">
<meta itemprop="image" content="/images/feature-image.png">
diff --git a/community/resources/index.html b/community/resources/index.html
index 5ad7e84d57..d193cea61f 100644
--- a/community/resources/index.html
+++ b/community/resources/index.html
@@ -30,12 +30,12 @@
<meta property="og:locale" content="en">
<meta property="og:type" content="article">
<meta property="article:section" content="community">
- <meta property="article:modified_time" content="2026-04-07T20:24:10+05:30">
+ <meta property="article:modified_time" content="2026-04-07T21:16:22+05:30">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="Apache Airflow">
<meta itemprop="description" content="Promo Materials Download official Apache Airflow branding materials, including logos and banners, to accurately represent and promote the project. Airflow logos Logo SVGs (light): Horizontal, Small, Icon Logo SVGs (dark): Horizontal, Small, Icon Brandbook Drawio Diagrams Lucidchart Diagrams Promo stuff Proposed Logo Redesign">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="43">
<meta itemprop="image" content="/images/feature-image.png">
diff --git a/docs/index.html b/docs/index.html
index e618900531..8152ebd12d 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -36,7 +36,7 @@ Apache Airflow CTL (airflowctl) Apache Airflow CTL (airflowctl) is a command-lin
<meta itemprop="name" content="Documentation">
<meta itemprop="description" content="Documentation Apache Airflow® Apache Airflow Core, which includes webserver, scheduler, CLI and other components that are needed for minimal Airflow installation. Read the documentation »
Apache Airflow CTL (airflowctl) Apache Airflow CTL (airflowctl) is a command-line interface (CLI) for Apache Airflow that interacts exclusively with the Airflow REST API. It provides a secure, auditable, and consistent way to manage Airflow deployments — without direct access to the metadata database. Read the documentation »">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="587">
<meta itemprop="image" content="/images/feature-image.png">
diff --git a/ecosystem/index.html b/ecosystem/index.html
index 2ff744de5d..8b43d75170 100644
--- a/ecosystem/index.html
+++ b/ecosystem/index.html
@@ -36,7 +36,7 @@ If you would you like to be included on this page, please reach out to the Apach
<meta itemprop="name" content="Ecosystem">
<meta itemprop="description" content=" Ecosystem These resources and services are not maintained, nor endorsed by the Apache Airflow® Community and Apache Airflow project (maintained by the Committers and the Airflow PMC). Use them at your sole discretion. The community does not verify the licences nor validity of those tools, so it’s your responsibility to verify them.
If you would you like to be included on this page, please reach out to the Apache Airflow dev or user mailing list and let us know or simply open a Pull Request to that page.">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="2258">
<meta itemprop="image" content="/images/feature-image.png">
diff --git a/index.html b/index.html
index 2b543cb6e7..a2cad9e532 100644
--- a/index.html
+++ b/index.html
@@ -34,7 +34,7 @@
<meta itemprop="name" content="Home">
<meta itemprop="description" content="Platform created by the community to programmatically author, schedule and monitor workflows.">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="image" content="/images/feature-image.png">
@@ -1314,45 +1314,45 @@
<div class="blog-snippet-list">
<article class="blog-snippet-item">
- <time datetime="2026-03-19 00:00:00 +0000 UTC">
- Mar 19, 2026
+ <time datetime="2026-04-07 00:00:00 +0000 UTC">
+ Apr 7, 2026
</time>
<h3 class="blog-snippet-title">
- <a href="/blog/airflow-registry/">Introducing the Apache Airflow Registry</a>
+ <a href="/blog/airflow-3.2.0/">Apache Airflow 3.2.0: Data-Aware Workflows at Scale</a>
</h3>
<p class="blog-snippet-excerpt">
- Today we’re launching the Apache Airflow Registry — a searchable catalog of every official Airflow provider and its modules, live at …
+ We’re proud to announce the release of Apache Airflow 3.2.0! Airflow 3.1 puts humans at the center of automated workflows. 3.2 brings …
</p>
</article>
<article class="blog-snippet-item">
- <time datetime="2026-01-22 00:00:00 +0000 UTC">
- Jan 22, 2026
+ <time datetime="2026-03-19 00:00:00 +0000 UTC">
+ Mar 19, 2026
</time>
<h3 class="blog-snippet-title">
- <a href="/blog/airflow-survey-2025/">Airflow Survey 2025</a>
+ <a href="/blog/airflow-registry/">Introducing the Apache Airflow Registry</a>
</h3>
<p class="blog-snippet-excerpt">
-
-The interactive report is hosted by Astronomer. The Apache Airflow community thanks Astronomer for running this survey, for sponsoring it …
+ Today we’re launching the Apache Airflow Registry — a searchable catalog of every official Airflow provider and its modules, live at …
</p>
</article>
<article class="blog-snippet-item">
- <time datetime="2025-10-15 00:00:00 +0000 UTC">
- Oct 15, 2025
+ <time datetime="2026-01-22 00:00:00 +0000 UTC">
+ Jan 22, 2026
</time>
<h3 class="blog-snippet-title">
- <a href="/blog/airflowctl-0.1.0/">Apache Airflow CTL aka airflowctl 0.1.0</a>
+ <a href="/blog/airflow-survey-2025/">Airflow Survey 2025</a>
</h3>
<p class="blog-snippet-excerpt">
- We are thrilled to announce the first major release of airflowctl 0.1.0, the new secure, API-driven command-line interface (CLI) for Apache …
+
+The interactive report is hosted by Astronomer. The Apache Airflow community thanks Astronomer for running this survey, for sponsoring it …
</p>
</article>
diff --git a/index.xml b/index.xml
index cb8e542783..cf982ff5df 100644
--- a/index.xml
+++ b/index.xml
@@ -7,6 +7,13 @@
<generator>Hugo</generator>
<language>en</language>
<atom:link href="/index.xml" rel="self" type="application/rss+xml" />
+ <item>
+ <title>Apache Airflow 3.2.0: Data-Aware Workflows at Scale</title>
+ <link>/blog/airflow-3.2.0/</link>
+ <pubDate>Tue, 07 Apr 2026 00:00:00 +0000</pubDate>
+ <guid>/blog/airflow-3.2.0/</guid>
+ <description><p>We&rsquo;re proud to announce the release of <strong>Apache Airflow 3.2.0</strong>! Airflow 3.1 puts humans at the center of automated workflows. 3.2 brings that same precision to data: Asset partitioning for granular pipeline orchestration, multi-team deployments for enterprise scale, synchronous deadline alert callbacks, and continued progress toward full Task SDK separation.</p>
<p><strong>Details</strong>:</p& [...]
+ </item>
<item>
<title>Introducing the Apache Airflow Registry</title>
<link>/blog/airflow-registry/</link>
diff --git a/meetups/index.html b/meetups/index.html
index bd337c4200..865d0a007a 100644
--- a/meetups/index.html
+++ b/meetups/index.html
@@ -34,7 +34,7 @@
<meta itemprop="name" content="Meetups">
<meta itemprop="description" content="Platform created by the community to programmatically author, schedule and monitor workflows.">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="image" content="/images/feature-image.png">
diff --git a/privacy-notice/index.html b/privacy-notice/index.html
index d9ccb7ff60..30fe3cbef0 100644
--- a/privacy-notice/index.html
+++ b/privacy-notice/index.html
@@ -34,7 +34,7 @@
<meta itemprop="name" content="Privacy notice">
<meta itemprop="description" content="Privacy Notice The website follows the Privacy Policy of the Apache Software Foundation.">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="13">
<meta itemprop="image" content="/images/feature-image.png">
diff --git a/roadmap/index.html b/roadmap/index.html
index 39289f6ae3..a927c33038 100644
--- a/roadmap/index.html
+++ b/roadmap/index.html
@@ -36,7 +36,7 @@
<meta itemprop="name" content="Roadmap">
<meta itemprop="description" content="TODO: Roadmap page is temporarily hidden. When the content is ready, re-add the page by putting the following code in the frontmatter:
--- title: "Roadmap" linkTitle: "Roadmap" showSideNav: false menu: main: weight: 15 --- Primary Heading A One thing to wrap your head around (it may not be very intuitive for everyone at first) is that this Airflow Python script is really just a configuration file specifying the DAG’s structure as code. The actual tasks defined here will run in a different context from the context of this script. Different tasks run on different workers at different points in time, which [...]
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="734">
<meta itemprop="image" content="/images/feature-image.png">
diff --git a/search/index.html b/search/index.html
index 7358274e3d..3be2aa3767 100644
--- a/search/index.html
+++ b/search/index.html
@@ -29,12 +29,12 @@
<meta property="og:description" content="Platform created by the community to programmatically author, schedule and monitor workflows.">
<meta property="og:locale" content="en">
<meta property="og:type" content="article">
- <meta property="article:modified_time" content="2026-04-07T20:24:10+05:30">
+ <meta property="article:modified_time" content="2026-04-07T21:16:22+05:30">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="Search Results">
<meta itemprop="description" content="Platform created by the community to programmatically author, schedule and monitor workflows.">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="image" content="/images/feature-image.png">
diff --git a/sitemap.xml b/sitemap.xml
index 3296c987ad..fd436b0717 100644
--- a/sitemap.xml
+++ b/sitemap.xml
@@ -3,239 +3,242 @@
xmlns:xhtml="http://www.w3.org/1999/xhtml">
<url>
<loc>/docs/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
- <loc>/blog/tags/community/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <loc>/blog/airflow-3.2.0/</loc>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
- <loc>/blog/airflow-registry/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <loc>/blog/tags/release/</loc>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/tags/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
+ </url><url>
+ <loc>/blog/tags/community/</loc>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
+ </url><url>
+ <loc>/blog/airflow-registry/</loc>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/blog/airflow-survey-2025/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/blog/tags/survey/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/blog/tags/users/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/blog/airflowctl-0.1.0/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
- </url><url>
- <loc>/blog/tags/release/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/blog/airflow-3.1.0/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/blog/airflow-three-point-oh-is-here/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/blog/airflow-survey-2024/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/blog/airflow-2.10.0/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/blog/airflow-2.9.0/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/blog/tags/vulnerabilities/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/blog/fab-oid-vulnerability/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/blog/airflow-2.8.0/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/blog/airflow-survey-2023/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/blog/airflow-2.7.0/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/blog/introducing_setup_teardown/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/blog/airflow-2.6.0/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/blog/airflow-2.5.0/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/blog/airflow-2.4.0/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/blog/airflow-survey-2022/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/blog/tags/airflow-summit/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/blog/airflow_summit_2022/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/blog/airflow-2.3.0/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/blog/airflow-2.2.0/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/blog/airflow_summit_2021/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/blog/airflow-survey-2020/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/blog/airflow-two-point-oh-is-here/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/blog/experience-with-airflow-as-an-outreachy-intern/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/blog/airflow-1.10.12/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/blog/apache-airflow-for-newcomers/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/announcements/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/blog/implementing-stable-api-for-apache-airflow/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/blog/tags/rest-api/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/blog/airflow-1.10.10/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/blog/airflow-1.10.8-1.10.9/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/blog/tags/documentation/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/blog/experience-in-google-season-of-docs-2019-with-apache-airflow/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/blog/airflow-survey/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/blog/announcing-new-website/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/blog/apache-con-europe-2019-thoughts-and-insights-by-airflow-committers/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/blog/tags/development/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/blog/documenting-using-local-development-environments/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/blog/its-a-breeze-to-develop-apache-airflow/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/community/resources/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/survey/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/use-cases/adjoe/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/use-cases/adobe/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/use-cases/adyen/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/use-cases/big-fish-games/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/blocktype/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/blog/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/use-cases/business_operations/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/categories/</loc>
</url><url>
<loc>/code-of-conduct/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/community/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/use-cases/dish/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/ecosystem/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/use-cases/etl_analytics/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/use-cases/experity/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/use-cases/infrastructure-management/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/meetups/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/use-cases/mlops/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/use-cases/onefootball/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/use-cases/plarium-krasnodar/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/privacy-notice/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/use-cases/suse/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/roadmap/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/search/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/use-cases/seniorlink/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/use-cases/sift/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/use-cases/snapp/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/blocktype/testimonial/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/use-cases/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url><url>
<loc>/blocktype/use-case/</loc>
- <lastmod>2026-04-07T20:24:10+05:30</lastmod>
+ <lastmod>2026-04-07T21:16:22+05:30</lastmod>
</url>
</urlset>
diff --git a/survey/index.html b/survey/index.html
index 40ae9880e8..6eb34c44dc 100644
--- a/survey/index.html
+++ b/survey/index.html
@@ -34,7 +34,7 @@
<meta itemprop="name" content="Apache Airflow">
<meta itemprop="description" content="<!DOCTYPE html> Redirecting... If you are not redirected automatically, please click here.">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="12">
<meta itemprop="image" content="/images/feature-image.png">
diff --git a/tags/index.html b/tags/index.html
index 77623688a0..0dd8ce4375 100644
--- a/tags/index.html
+++ b/tags/index.html
@@ -34,8 +34,8 @@
<meta itemprop="name" content="Tags">
<meta itemprop="description" content="Platform created by the community to programmatically author, schedule and monitor workflows.">
- <meta itemprop="datePublished" content="2026-03-19T00:00:00+00:00">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="datePublished" content="2026-04-07T00:00:00+00:00">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="image" content="/images/feature-image.png">
@@ -503,7 +503,7 @@
<li><a class="taxonomy-term" href="/blog/tags/community/" data-taxonomy-term="community"><span class="taxonomy-label">Community</span><span class="taxonomy-count">13</span></a></li>
<li><a class="taxonomy-term" href="/blog/tags/development/" data-taxonomy-term="development"><span class="taxonomy-label">Development</span><span class="taxonomy-count">2</span></a></li>
<li><a class="taxonomy-term" href="/blog/tags/documentation/" data-taxonomy-term="documentation"><span class="taxonomy-label">Documentation</span><span class="taxonomy-count">1</span></a></li>
- <li><a class="taxonomy-term" href="/blog/tags/release/" data-taxonomy-term="release"><span class="taxonomy-label">Release</span><span class="taxonomy-count">16</span></a></li>
+ <li><a class="taxonomy-term" href="/blog/tags/release/" data-taxonomy-term="release"><span class="taxonomy-label">Release</span><span class="taxonomy-count">17</span></a></li>
<li><a class="taxonomy-term" href="/blog/tags/rest-api/" data-taxonomy-term="rest-api"><span class="taxonomy-label">REST API</span><span class="taxonomy-count">1</span></a></li>
<li><a class="taxonomy-term" href="/blog/tags/survey/" data-taxonomy-term="survey"><span class="taxonomy-label">Survey</span><span class="taxonomy-count">6</span></a></li>
<li><a class="taxonomy-term" href="/blog/tags/users/" data-taxonomy-term="users"><span class="taxonomy-label">Users</span><span class="taxonomy-count">6</span></a></li>
diff --git a/tags/index.xml b/tags/index.xml
index 449562617e..49728d6e67 100644
--- a/tags/index.xml
+++ b/tags/index.xml
@@ -6,8 +6,15 @@
<description>Recent content in Tags on Apache Airflow</description>
<generator>Hugo</generator>
<language>en</language>
- <lastBuildDate>Tue, 07 Apr 2026 20:24:10 +0530</lastBuildDate>
+ <lastBuildDate>Tue, 07 Apr 2026 21:16:22 +0530</lastBuildDate>
<atom:link href="/tags/index.xml" rel="self" type="application/rss+xml" />
+ <item>
+ <title>Release</title>
+ <link>/blog/tags/release/</link>
+ <pubDate>Tue, 07 Apr 2026 00:00:00 +0000</pubDate>
+ <guid>/blog/tags/release/</guid>
+ <description></description>
+ </item>
<item>
<title>Community</title>
<link>/blog/tags/community/</link>
@@ -29,13 +36,6 @@
<guid>/blog/tags/users/</guid>
<description></description>
</item>
- <item>
- <title>Release</title>
- <link>/blog/tags/release/</link>
- <pubDate>Wed, 15 Oct 2025 00:00:00 +0000</pubDate>
- <guid>/blog/tags/release/</guid>
- <description></description>
- </item>
<item>
<title>Vulnerabilities</title>
<link>/blog/tags/vulnerabilities/</link>
diff --git a/use-cases/adjoe/index.html b/use-cases/adjoe/index.html
index cf577d938a..b5adc7f446 100644
--- a/use-cases/adjoe/index.html
+++ b/use-cases/adjoe/index.html
@@ -31,13 +31,13 @@ How did Apache Airflow help to solve this problem? With the creation of a new AW
<meta property="og:locale" content="en">
<meta property="og:type" content="article">
<meta property="article:section" content="use-cases">
- <meta property="article:modified_time" content="2026-04-07T20:24:10+05:30">
+ <meta property="article:modified_time" content="2026-04-07T21:16:22+05:30">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="adjoe">
<meta itemprop="description" content="What was the problem? Before adopting Airflow at adjoe, we handled job scheduling in two main ways: by setting up Kubernetes cronjobs or building AWS Lambda functions. While both approaches had their benefits, they also came with limitations, especially when it came to managing more complex workloads. As our data science teams needs evolved, it became clear that we needed a more robust and flexible orchestration tool.
How did Apache Airflow help to solve this problem? With the creation of a new AWS environment for the data science teams, we introduced Airflow on Kubernetes as our primary orchestration solution, addressing both stability and scalability requirements.">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="258">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Testimonial">
diff --git a/use-cases/adobe/index.html b/use-cases/adobe/index.html
index e56038232b..683d14303e 100644
--- a/use-cases/adobe/index.html
+++ b/use-cases/adobe/index.html
@@ -30,12 +30,12 @@
<meta property="og:locale" content="en">
<meta property="og:type" content="article">
<meta property="article:section" content="use-cases">
- <meta property="article:modified_time" content="2026-04-07T20:24:10+05:30">
+ <meta property="article:modified_time" content="2026-04-07T21:16:22+05:30">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="Adobe">
<meta itemprop="description" content="What was the problem? Modern big data platforms need sophisticated data pipelines connecting to many backend services enabling complex workflows. These workflows need to be deployed, monitored, and run either on regular schedules or triggered by external events. Adobe Experience Platform component services architected and built an orchestration service to enable their users to author, schedule, and monitor complex hierarchical (including sequential [...]
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="251">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Testimonial">
diff --git a/use-cases/adyen/index.html b/use-cases/adyen/index.html
index 5e504f4567..dff92ffe08 100644
--- a/use-cases/adyen/index.html
+++ b/use-cases/adyen/index.html
@@ -30,12 +30,12 @@
<meta property="og:locale" content="en">
<meta property="og:type" content="article">
<meta property="article:section" content="use-cases">
- <meta property="article:modified_time" content="2026-04-07T20:24:10+05:30">
+ <meta property="article:modified_time" content="2026-04-07T21:16:22+05:30">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="Adyen">
<meta itemprop="description" content="What was the problem? Many years ago we started out with our own orchestration framework. Due to all the required custom functionality it made sense at the time. However, quickly we realized creating an orchestration tool is not to be underestimated. With the quickly increasing number of users and teams, time spent on fixing issues increased, severely limiting development speed. Furthermore, due to it not being open source, we constantly had to mak [...]
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="405">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Testimonial">
diff --git a/use-cases/big-fish-games/index.html b/use-cases/big-fish-games/index.html
index d58bad9d9a..a743c7afc6 100644
--- a/use-cases/big-fish-games/index.html
+++ b/use-cases/big-fish-games/index.html
@@ -30,12 +30,12 @@
<meta property="og:locale" content="en">
<meta property="og:type" content="article">
<meta property="article:section" content="use-cases">
- <meta property="article:modified_time" content="2026-04-07T20:24:10+05:30">
+ <meta property="article:modified_time" content="2026-04-07T21:16:22+05:30">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="Big Fish Games">
<meta itemprop="description" content="What was the problem? The main challenge is the lack of standardized ETL workflow orchestration tools. PowerShell and Python-based ETL frameworks built in-house are currently used for scheduling and running analytical workloads. However, there is no web UI through which we can monitor these workflows and it requires additional effort to maintain this framework. These scheduled jobs based on external dependencies are not well suited to modern Big Da [...]
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="336">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Testimonial">
diff --git a/use-cases/business_operations/index.html b/use-cases/business_operations/index.html
index eaaaf33ef7..a647b7fb22 100644
--- a/use-cases/business_operations/index.html
+++ b/use-cases/business_operations/index.html
@@ -31,13 +31,13 @@ This video shows an example of using Airflow to run the pipelines that power a c
<meta property="og:locale" content="en">
<meta property="og:type" content="article">
<meta property="article:section" content="use-cases">
- <meta property="article:modified_time" content="2026-04-07T20:24:10+05:30">
+ <meta property="article:modified_time" content="2026-04-07T21:16:22+05:30">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="Business Operations">
<meta itemprop="description" content="Use Airflow for Business operations pipelines Airflow can be the starting point for your business idea! For many companies, Airflow delivers the data that powers their core business applications. Whether you need to aggregate user data to power personalized recommendations, display analytics in a user-facing dashboard, or prepare the input data for an LLM, Airflow is the perfect orchestrator.
This video shows an example of using Airflow to run the pipelines that power a customer-facing analytics dashboard. You can find the code shown in this example here.">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="425">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Use-Case">
diff --git a/use-cases/dish/index.html b/use-cases/dish/index.html
index cf8c7e8dfb..f96c7ac0db 100644
--- a/use-cases/dish/index.html
+++ b/use-cases/dish/index.html
@@ -30,12 +30,12 @@
<meta property="og:locale" content="en">
<meta property="og:type" content="article">
<meta property="article:section" content="use-cases">
- <meta property="article:modified_time" content="2026-04-07T20:24:10+05:30">
+ <meta property="article:modified_time" content="2026-04-07T21:16:22+05:30">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="Dish">
<meta itemprop="description" content="What was the problem? We faced increasing complexity managing lengthy crontabs with scheduling being an issue, this required carefully planning timing due to resource constraints, usage patterns, and especially custom code needed for retry logic. In the last case, having to verify success of previous jobs and/or steps prior to running the next. Furthermore, time to results is important, but we were increasingly relying on buffers for processing, wh [...]
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="248">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Testimonial">
diff --git a/use-cases/etl_analytics/index.html b/use-cases/etl_analytics/index.html
index ad269f1aa7..24d89fa7d4 100644
--- a/use-cases/etl_analytics/index.html
+++ b/use-cases/etl_analytics/index.html
@@ -31,13 +31,13 @@ The video below shows a simple ETL/ELT pipeline in Airflow that extracts climate
<meta property="og:locale" content="en">
<meta property="og:type" content="article">
<meta property="article:section" content="use-cases">
- <meta property="article:modified_time" content="2026-04-07T20:24:10+05:30">
+ <meta property="article:modified_time" content="2026-04-07T21:16:22+05:30">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="ETL/ELT">
<meta itemprop="description" content="Use Airflow for ETL/ELT pipelines Extract-Transform-Load (ETL) and Extract-Load-Transform (ELT) data pipelines are the most common use case for Apache Airflow. 90% of respondents in the 2023 Apache Airflow survey are using Airflow for ETL/ELT to power analytics use cases.
The video below shows a simple ETL/ELT pipeline in Airflow that extracts climate data from a CSV file, as well as weather data from an API, runs transformations and then loads the results into a database to power a dashboard.">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="291">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Use-Case">
diff --git a/use-cases/experity/index.html b/use-cases/experity/index.html
index 2592456327..5d6ddf70a0 100644
--- a/use-cases/experity/index.html
+++ b/use-cases/experity/index.html
@@ -31,13 +31,13 @@ How did Apache Airflow help to solve this problem? Ultimately we decided flexibl
<meta property="og:locale" content="en">
<meta property="og:type" content="article">
<meta property="article:section" content="use-cases">
- <meta property="article:modified_time" content="2026-04-07T20:24:10+05:30">
+ <meta property="article:modified_time" content="2026-04-07T21:16:22+05:30">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="Experity">
<meta itemprop="description" content="What was the problem? We had to deploy our complex, flagship app to multiple nodes in multiple ways. This required tasks to communicate across Windows nodes and coordinate timing perfectly. We did not want to buy an expensive enterprise scheduling tool and needed ultimate flexibility.
How did Apache Airflow help to solve this problem? Ultimately we decided flexible, multi-node, DAG capable tooling was key and airflow was one of the few tools that fit that bill. Having it based on open source and python were large factors that upheld our core principles. At the time, Airflow was missing a windows hook and operator so we contributed the WinRM hook and operator back to the community. Given its flexibility we also use DAG generators to have our metadata drive our DAGs and [...]
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="191">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Testimonial">
diff --git a/use-cases/index.html b/use-cases/index.html
index 4cc3e2f041..069b8e34ce 100644
--- a/use-cases/index.html
+++ b/use-cases/index.html
@@ -34,7 +34,7 @@
<meta itemprop="name" content="Use Cases">
<meta itemprop="description" content="Platform created by the community to programmatically author, schedule and monitor workflows.">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="image" content="/images/feature-image.png">
diff --git a/use-cases/infrastructure-management/index.html b/use-cases/infrastructure-management/index.html
index d7e927f165..f80ce10514 100644
--- a/use-cases/infrastructure-management/index.html
+++ b/use-cases/infrastructure-management/index.html
@@ -31,13 +31,13 @@ Infrastructure management is often needed within the context of other use cases,
<meta property="og:locale" content="en">
<meta property="og:type" content="article">
<meta property="article:section" content="use-cases">
- <meta property="article:modified_time" content="2026-04-07T20:24:10+05:30">
+ <meta property="article:modified_time" content="2026-04-07T21:16:22+05:30">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="Infrastructure Management">
<meta itemprop="description" content="Use Airflow for Infrastructure Management Airflow can interact with any API, which makes it a great tool to manage your infrastructure, such as Kubernetes or Spark clusters running in any cloud. As of Airflow 2.7, the setup/teardown feature is available, a special type of task with intelligent behavior to spin up and tear down infrastructure at the exact time you need it.
Infrastructure management is often needed within the context of other use cases, such as MLOps, or implementing data quality checks. This video shows an example of how it might be used for an MLOps pipeline. You can find the code shown in this example here.">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="310">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Use-Case">
diff --git a/use-cases/mlops/index.html b/use-cases/mlops/index.html
index 2c8de97b57..4bc2f576dc 100644
--- a/use-cases/mlops/index.html
+++ b/use-cases/mlops/index.html
@@ -30,12 +30,12 @@
<meta property="og:locale" content="en">
<meta property="og:type" content="article">
<meta property="article:section" content="use-cases">
- <meta property="article:modified_time" content="2026-04-07T20:24:10+05:30">
+ <meta property="article:modified_time" content="2026-04-07T21:16:22+05:30">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="MLOps">
<meta itemprop="description" content="Use Airflow for Machine Learning Operations (MLOps) Machine Learning Operations (MLOps) is a broad term encompassing everything needed to run machine learning models in production. MLOps is a rapidly evolving field with many different best practices and behavioral patterns, with Apache Airflow providing tool agnostic orchestration capabilities for all steps. An emerging subset of MLOps is Large Language Model Operations (LLMOps), which focuses on d [...]
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="376">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Use-Case">
diff --git a/use-cases/onefootball/index.html b/use-cases/onefootball/index.html
index 90abd12cec..705b64d0a9 100644
--- a/use-cases/onefootball/index.html
+++ b/use-cases/onefootball/index.html
@@ -31,13 +31,13 @@ On top of that, new data tools appear each month: third party data sources, clou
<meta property="og:locale" content="en">
<meta property="og:type" content="article">
<meta property="article:section" content="use-cases">
- <meta property="article:modified_time" content="2026-04-07T20:24:10+05:30">
+ <meta property="article:modified_time" content="2026-04-07T21:16:22+05:30">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="Onefootball">
<meta itemprop="description" content="What was the problem? With millions of daily active users, managing the complexity of data engineering at Onefootball is a constant challenge. Lengthy crontabs, multiplication of custom API clients, erosion of confidence in the analytics served, increasing heroism (“only one person can solve this issue”). Those are the challenges that most teams face unless they consciously invest in their tools and processes.
On top of that, new data tools appear each month: third party data sources, cloud providers solutions, different storage technologies… Managing all those integrations is costly and brittle, especially for small data engineering teams that are trying to do more with less.">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="294">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Testimonial">
diff --git a/use-cases/plarium-krasnodar/index.html b/use-cases/plarium-krasnodar/index.html
index 8927771a4c..f64d2f10ef 100644
--- a/use-cases/plarium-krasnodar/index.html
+++ b/use-cases/plarium-krasnodar/index.html
@@ -30,12 +30,12 @@
<meta property="og:locale" content="en">
<meta property="og:type" content="article">
<meta property="article:section" content="use-cases">
- <meta property="article:modified_time" content="2026-04-07T20:24:10+05:30">
+ <meta property="article:modified_time" content="2026-04-07T21:16:22+05:30">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="Plarium Krasnodar">
<meta itemprop="description" content="What was the problem? Our Research & Development department carries out various experiments, and in all of them, we need to create workflow orchestrations for solving tasks in game dev. Previously, we didn’t have any suitable tools with a sufficient number of built-in functions, and we had to orchestrate processes manually and entirely from scratch every time. This led to difficulties with dependencies and monitoring when building complex workf [...]
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="257">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Testimonial">
diff --git a/use-cases/seniorlink/index.html b/use-cases/seniorlink/index.html
index 11bd54d281..73999a9441 100644
--- a/use-cases/seniorlink/index.html
+++ b/use-cases/seniorlink/index.html
@@ -31,13 +31,13 @@ We had built a robust stack of batch processes to deliver value to the business,
<meta property="og:locale" content="en">
<meta property="og:type" content="article">
<meta property="article:section" content="use-cases">
- <meta property="article:modified_time" content="2026-04-07T20:24:10+05:30">
+ <meta property="article:modified_time" content="2026-04-07T21:16:22+05:30">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="Seniorlink">
<meta itemprop="description" content="What was the problem? Here at Seniorlink, we provide services, support, and technology that engages family caregivers. One of our focuses is using data to bolster our knowledge and improve the experience of our users. Like many looking to build an effective data stack, we adopted a Python, Spark, Redshift, and Tableau core toolset.
We had built a robust stack of batch processes to deliver value to the business, deploying these data services in AWS using a mixture of EMR, ECS, Lambda, and EC2. Moving fast, as many new endeavors do, we ultimately ended up with one monolithic batch process with many smaller satellite jobs. Given the scale and quantity of jobs, we began to lose transparency as to what was happening. Additionally, many jobs were launched in a single EMR cluster and so tightly coupled that a failure in o [...]
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="400">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Testimonial">
diff --git a/use-cases/sift/index.html b/use-cases/sift/index.html
index b7d88da3b3..01a92ee56f 100644
--- a/use-cases/sift/index.html
+++ b/use-cases/sift/index.html
@@ -30,12 +30,12 @@
<meta property="og:locale" content="en">
<meta property="og:type" content="article">
<meta property="article:section" content="use-cases">
- <meta property="article:modified_time" content="2026-04-07T20:24:10+05:30">
+ <meta property="article:modified_time" content="2026-04-07T21:16:22+05:30">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="Sift">
<meta itemprop="description" content="What was the problem? At Sift, we’re constantly training machine learning models that feed into the core of Sift’s Digital Trust & Safety platform. The platform gives our customers a way to discern suspicious online behavior from trustworthy behavior, allowing our customers to protect their online transactions, maintain the integrity of their content platforms, and keep their users’ accounts secure. To make this possible, we’ve built model trai [...]
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="641">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Testimonial">
diff --git a/use-cases/snapp/index.html b/use-cases/snapp/index.html
index c9893fb01b..3794bbc864 100644
--- a/use-cases/snapp/index.html
+++ b/use-cases/snapp/index.html
@@ -30,12 +30,12 @@
<meta property="og:locale" content="en">
<meta property="og:type" content="article">
<meta property="article:section" content="use-cases">
- <meta property="article:modified_time" content="2026-04-07T20:24:10+05:30">
+ <meta property="article:modified_time" content="2026-04-07T21:16:22+05:30">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="Snapp">
<meta itemprop="description" content="What was the problem? As the Map team at Snapp, one of the largest and fastest-growing internet companies in the Middle East, we have experienced significant growth over the past couple of years, expanding from a team of 7 to a team of 60. However, with this growth came the realization that some of our crucial tasks were being performed manually. This manual approach consumed valuable time and hindered our ability to execute these tasks efficiently.">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="641">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Testimonial">
diff --git a/use-cases/suse/index.html b/use-cases/suse/index.html
index 39be5596a7..be7c713eec 100644
--- a/use-cases/suse/index.html
+++ b/use-cases/suse/index.html
@@ -31,13 +31,13 @@ The construction of these containers requires the installation of several librar
<meta property="og:locale" content="en">
<meta property="og:type" content="article">
<meta property="article:section" content="use-cases">
- <meta property="article:modified_time" content="2026-04-07T20:24:10+05:30">
+ <meta property="article:modified_time" content="2026-04-07T21:16:22+05:30">
<meta property="og:image" content="/images/feature-image.png">
<meta itemprop="name" content="RancherBySUSE">
<meta itemprop="description" content="What was the problem? Our aim was to build, package, test and distribute curated and trusted containers at scale in an automated way. Those containers can be of any nature, meaning that we need a solution that allows us to build any kind of software with any kind of building tools like Maven, Rust, Java, Ant, or Go.
The construction of these containers requires the installation of several libraries (which may even conflict) and the orchestration of complex workflows with several integrations, executed either on a scheduled basis or triggered by events from external systems.">
- <meta itemprop="dateModified" content="2026-04-07T20:24:10+05:30">
+ <meta itemprop="dateModified" content="2026-04-07T21:16:22+05:30">
<meta itemprop="wordCount" content="361">
<meta itemprop="image" content="/images/feature-image.png">
<meta itemprop="keywords" content="Testimonial">