# Apache Airflow 2.0 is here!

DevFeed: [Apache Airflow 2.0 is here!](<https://devfeed.tech/articles/apache-airflow-2-0-is-here-32551.md>)

Original publisher: [Read original article](<https://airflow.apache.org/blog/airflow-two-point-oh-is-here/>)

Author: Apache Airflow

Published: 2020-12-17T00:00:00Z

Content type: release

Language: en

Sources: [Apache Airflow Blog](<https://devfeed.tech/sources/apache-airflow-blog.md>)

Topics: [airflow](<https://devfeed.tech/topics/airflow.md>), [API](<https://devfeed.tech/topics/api.md>), [REST API](<https://devfeed.tech/topics/rest-api.md>), [OpenAPI Specification](<https://devfeed.tech/topics/openapi.md>), [resiliency](<https://devfeed.tech/topics/resiliency.md>)

Tags: [airflow](<https://devfeed.tech/tags/airflow.md>), [announce](<https://devfeed.tech/tags/announce.md>), [apache-airflow](<https://devfeed.tech/tags/apache-airflow.md>), [api](<https://devfeed.tech/tags/api.md>), [api-documentation](<https://devfeed.tech/tags/api-documentation.md>), [ha](<https://devfeed.tech/tags/ha.md>), [improvements](<https://devfeed.tech/tags/improvements.md>), [openapi](<https://devfeed.tech/tags/openapi.md>), [release](<https://devfeed.tech/tags/release.md>), [rest-api](<https://devfeed.tech/tags/rest-api.md>), [scheduler](<https://devfeed.tech/tags/scheduler.md>)

## AI overview

Apache Airflow 2.0.0 has been released with the TaskFlow API for authoring DAGs, a fully supported REST API with an OpenAPI specification, scheduler performance improvements, support for multiple highly available schedulers, and Task Groups for organizing tasks.

## Source excerpt

I am proud to announce that Apache Airflow 2.0.0 has been released. The full changelog is about 3,000 lines long (already excluding everything backported to 1.10), so for now I'll simply share some of the major features in 2.0.0 compared to 1.10.14: A new way of writing dags: the TaskFlow API (AIP-31) (Known in 2.0.0alphas as Functional DAGs.) DAGs are now much much nicer to author especially when using PythonOperator. Dependencies are handled more clearly and XCom is nicer to use Read more here: TaskFlow API Tutorial TaskFlow API Documentation A quick teaser of what DAGs can now look like: from airflow.decorators import dag, task from airflow.utils.dates import days_ago @dag(default_args={'owner': 'airflow'}, schedule_interval=None, start_date=days_ago(2)) def tutorial_taskflow_api_etl(): @task def extract(): return {"1001": 301.27, "1002": 433.21, "1003": 502.22} @task def transform(order_data_dict: dict) -> dict: total_order_value = 0 for value in order_data_dict.values(): total_order_value += value return {"total_order_value": total_order_value} @task() def load(total_order_value: float): print("Total order value is: %.2f" % total_order_value) order_data = extract() order_summary = transform(order_data) load(order_summary["total_order_value"]) tutorial_etl_dag = tutorial_taskflow_api_etl() Fully specified REST API (AIP-32) We now have a fully supported, no-longer-experimental API with a comprehensive OpenAPI specification Read more here: REST API Documentation. Massive Scheduler performance improvements As part of AIP-15 (Scheduler HA+performance) and other work Kamil did, we significantly improved the performance of the Airflow Scheduler. It now starts tasks much, MUCH quicker. Over at Astronomer.io we've benchmarked the scheduler--it's fast (we had to triple check the numbers as we don't quite believe them at first!) Scheduler is now HA compatible (AIP-15) It's now possible and supported to run more than a single scheduler instance. This is super useful for bot