最近推送 2026-10-28 23:46(0 天前),属于活跃维护
apache/airflow
GITHUB中文整理主语言 Python · 47,297 星 · Apache-2.0 · 创建于 2015-04-14
Apache Airflow 是一个用代码编写、调度和监控工作流的平台,属于用 Python 开发的工作流编排系统。
仓库健康度
5 个维度开放 Issue 1,911 个 · Fork 18,197 个
star 记录还不够天数,增量算不出来
许可证 Apache-2.0 · 8 个 topics
这一项暂无数据,不代表项目没有发布
「证据不足」表示这项数据暂时没有取到,不能读成「项目有问题」;「部分数据」表示只拿到一部分信号。版本发布要额外调 Releases 接口,下一版补。
Star 趋势
6 天记录横轴 2026-10-23 → 2026-10-28,纵轴按这段时间的最小/最大值拉伸。趋势来自站内每天记录一次的星数,页面打开时不会实时请求 GitHub。
它解决什么问题
据 README 归纳当数据处理和任务调度依赖手工操作或分散脚本时,流程难以维护、版本化和测试,团队协作也困难。把工作流写成代码后,任务依赖和执行过程可以统一描述、追踪和复用,避免每次运行都靠人工盯守和临时排查。
核心能力
5 条- 1用 Python 代码定义工作流,使流程可维护、可版本化、可测试
- 2按任务间指定的依赖关系编排执行顺序
- 3由调度器在多个工作节点上执行任务
- 4提供命令行工具,便于对工作流做检查和操作
- 5提供可视化界面,查看生产环境中的流水线运行状态并排查问题
项目画像
6 个角度项目定位
Apache Airflow 是一个用代码编写、调度和监控工作流的平台,属于用 Python 开发的工作流编排系统。
适合谁
需要编排多步骤数据管道、定时任务或批处理流程的开发者与数据团队,以及需要统一管理和监控生产工作流的运维场景。
典型场景
{'典型场景': '在生产环境中通过可视化界面监控流水线状态,出现问题时定位并排查。'};{'典型场景': '用命令行工具对已定义的工作流进行检查和操作,处理运行中的复杂情况。'}
部署难度
通过 PyPI 安装 apache-airflow 包,但需配合对应版本和 Python 版本的约束文件才能得到可重复的可用环境;官方文档提供安装与入门教程,整体步骤和前置条件需按文档执行。
风险限制
依赖需尽量保持开放,有时直接用 pip 安装会失败或得到不可用环境;官方提供已知可用的约束文件用于可重复安装,且需匹配正确的版本与 Python 版本;通过 Poetry 或 pip-tools 安装当前不受支持。
最近维护
最近一次推送是 2026-10-28 23:46。 实现方式:用户把工作流写成代码,其中的任务及其依赖关系被描述出来;调度器按依赖关系把任务分派到一组工作节点上执行,并配合命令行工具和图形界面查看运行进度、定位故障。
README 原文细节
3 个板块怎么安装从零跑起来的步骤
Getting started
Visit the official Airflow website documentation (latest stable release) for help with installing Airflow, getting started, or walking through a more complete tutorial.
For more information on Airflow Improvement Proposals (AIPs), visit the Airflow Wiki.
Documentation for dependent projects like provider distributions, Docker image, Helm Chart, you'll find it in the documentation index.
Installing from PyPI
We publish Apache Airflow as apache-airflow package in PyPI. Installing it however might be sometimes tricky because Airflow is a bit of both a library and application. Libraries usually keep their dependencies open, and applications usually pin them, but we should do neither and both simultaneously. We decided to keep our dependencies as open as possible (in pyproject.toml) so users can install different versions of libraries if needed. This means that pip install apache-airflow will not work from time to time or will produce unusable Airflow installation.
To have repeatable installation, however, we keep a set of "known-to-be-working" constraint files in the orphan constraints-main and constraints-2-0 branches. We keep those "known-to-be-working" constraints files separately per major/minor Python version. You can use them as constraint files when installing Airflow from PyPI. Note that you have to specify correct Airflow tag/version/branch and Python versions in the URL.
While it is possible to install Airflow with tools like Poetry or pip-tools, they do not share the same workflow as pip - especially when it comes to constraint vs. requirements management. Installing via Poetry or pip-tools is not currently supported.
If you wish to install Airflow using those tools, you should use the constraint files and convert them to the appropriate format and workflow that your tool requires.
- Installing just Airflow:
- Installing with extras (i.e., postgres, google)
pip install 'apache-airflow==3.3.2' \
--constraint "https://raw.githubusercontent.com/apache/airflow/constraints-3.3.2/constraints-3.10.txt"
Installation
For comprehensive instructions on setting up your local development environment and installing Apache Airflow, please refer to the INSTALLING.md file.
环境与依赖跑它之前要准备什么
Requirements
Note: SQLite is used in Airflow tests. Do not use it in production. We recommend using the latest stable version of SQLite for local development.
Note: Airflow currently can be run on POSIX-compliant Operating Systems. For development, it is regularly tested on fairly modern Linux Distros and recent versions of macOS. On Windows you can run it via WSL2 (Windows Subsystem for Linux 2) or via Linux Containers. The work to add Windows support is tracked via #10388, but it is not a high priority. You should only use Linux-based distros as "Production" execution environment as this is the only environment that is supported. The only distro that is used in our CI tests and that is used in the Community managed DockerHub image is Debian Bookwo
- Python — 3.11, 3.12, 3.13, 3.14 — 3.10, 3.11, 3.12, 3.13, 3.14 — 3.10, 3.11, 3.12
- Platform — AMD64/ARM64 — AMD64/ARM64 — AMD64/ARM64(\)
- Kubernetes — 1.31, 1.32, 1.33, 1.34, 1.35, 1.36, 1.37 — 1.30, 1.31, 1.32, 1.33, 1.34, 1.35 — 1.26, 1.27, 1.28, 1.29, 1.30
- PostgreSQL — 14, 15, 16, 17, 18 — 14, 15, 16, 17, 18 — 12, 13, 14, 15, 16
- MySQL — 8.0, 8.4, Innovation — 8.0, 8.4, Innovation — 8.0, Innovation
- SQLite — 3.15.0+ — 3.15.0+ — 3.15.0+
Approach to dependencies of Airflow
Airflow has a lot of dependencies - direct and transitive, also Airflow is both - library and application, therefore our policies to dependencies has to include both - stability of installation of application, but also ability to install newer version of dependencies for those users who develop Dags. We developed the approach where constraints are used to make sure airflow can be installed in a repeatable way, while we do not limit our users to upgrade most of the dependencies. As a result we decided not to upper-bound version of Airflow dependencies by default, unless we have good reasons to
The constraint mechanism of ours takes care about finding and upgrading all the non-upper bound dependencies automatically (providing that all the tests pass). Our main build failures will indicate in case there are versions of dependencies that break our tests - indicating that we should either upper-bind them or that we should fix our code/tests to account for the upstream changes from those dependencies.
Whenever we upper-bound such a dependency, we should always comment why we are doing it - i.e. we should have a good reason why dependency is upper-bound. And we should also mention what is the condition to remove the binding.
Approach for dependencies for Airflow Core
There are few dependencies that we decided are important enough to upper-bound them by default, as they are known to follow predictable versioning scheme, and we know that new versions of those are very likely to bring breaking changes. We commit to regularly review and attempt to upgrade to the newer versions of the dependencies as they are released, but this is manual process.
- SQLAlchemy: upper-bound to specific MINOR version (SQLAlchemy is known to remove deprecations and
- introduce breaking changes especially that support for different Databases varies and changes at
- various speed)
- Alembic: it is important to handle our migrations in predictable and performant way. It is developed
- together with SQLAlchemy. Our experience with Alembic is that it very stable in MINOR version
- Flask: We are using Flask as the back-bone of our web UI and API. We know major version of Flask
- are very likely to introduce breaking changes across those so limiting it to MAJOR version makes sense
- werkzeug: the library is known to cause problems in new versions. It is tightly coupled with Flask
- libraries, and we should update them together
- celery: Celery is a crucial component of Airflow as it used for CeleryExecutor (and similar). Celery
- follows SemVer, so
- we should upper-bound it to the next MAJOR version. Also, when we bump the upper version of the library,
- we should make sure Celery Provider minimum Airflow version is updated.
- kubernetes: Kubernetes is a crucial component of Airflow as it is used for the KubernetesExecutor
Approach for dependencies in Airflow Providers and extras
The main part of the Airflow is the Airflow Core, but the power of Airflow also comes from a number of providers that extend the core functionality and are released separately, even if we keep them (for now) in the same monorepo for convenience. You can read more about the providers in the Providers documentation. We also have set of policies implemented for maintaining and releasing community-managed providers as well as the approach for community vs. 3rd party providers in the providers document.
Those extras and providers dependencies are maintained in provider.yaml of each provider.
By default, we should not upper-bound dependencies for providers, however each provider's maintainer might decide to add additional limits (and justify them with comment).
实现原理它内部是怎么做的
Principles
- Dynamic: Pipelines are defined in code, enabling dynamic dag generation and parameterization.
- Extensible: The Airflow framework includes a wide range of built-in operators and can be extended to fit your needs.
- Flexible: Airflow leverages the Jinja templating engine, allowing rich customizations.
关于 airflow 的常见问题
7 个问题airflow 是做什么的?
Apache Airflow 是一个用代码编写、调度和监控工作流的平台,属于用 Python 开发的工作流编排系统。 当数据处理和任务调度依赖手工操作或分散脚本时,流程难以维护、版本化和测试,团队协作也困难。把工作流写成代码后,任务依赖和执行过程可以统一描述、追踪和复用,避免每次运行都靠人工盯守和临时排查。
airflow 有哪些功能?
核心能力:用 Python 代码定义工作流,使流程可维护、可版本化、可测试;按任务间指定的依赖关系编排执行顺序;由调度器在多个工作节点上执行任务;提供命令行工具,便于对工作流做检查和操作;提供可视化界面,查看生产环境中的流水线运行状态并排查问题。
airflow 适合谁用?
需要编排多步骤数据管道、定时任务或批处理流程的开发者与数据团队,以及需要统一管理和监控生产工作流的运维场景。
airflow 是怎么工作的?
用户把工作流写成代码,其中的任务及其依赖关系被描述出来;调度器按依赖关系把任务分派到一组工作节点上执行,并配合命令行工具和图形界面查看运行进度、定位故障。
怎么安装 airflow?
按项目 README 的说明:Visit the official Airflow website documentation (latest stable release) for help with installing Airflow, getting started, or walking throu;For more information on Airflow Improvement Proposals (AIPs), visit the Airflow Wiki.;Installing just Airflow:;Installing with extras (i.e., postgres, google)。完整命令见下方「怎么安装」一节或 GitHub 仓库的 README。
用 airflow 有什么门槛或限制?
依赖需尽量保持开放,有时直接用 pip 安装会失败或得到不可用环境;官方提供已知可用的约束文件用于可重复安装,且需匹配正确的版本与 Python 版本;通过 Poetry 或 pip-tools 安装当前不受支持。
airflow 现在还在维护吗?数据怎么样?
目前 47,297 星,18,197 个 Fork,主语言 Python,创建于 2015-04-14,最近一次推送 2026-10-28 23:46,许可证 Apache-2.0。星数、Fork、推送时间都是 GitHub 返回的实时数据,「最近推送」离现在越近说明越活跃;长期不动要留意是否已停止维护。
这些内容来自哪
读法说明项目数据取自 GitHub 官方接口与项目 README;星数、Fork、语言与时间以 GitHub 页面为准,档案更新于 2026-10-23 18:00。
