{"id":6508,"library":"airflow-provider-fivetran-async","title":"Fivetran Async Provider for Apache Airflow","description":"The `airflow-provider-fivetran-async` library provides asynchronous operators, sensors, and hooks for integrating Fivetran with Apache Airflow. It leverages Airflow's deferrable tasks to efficiently orchestrate Fivetran data synchronization jobs, freeing up worker slots during I/O-bound waiting periods. This provider is actively maintained by Astronomer and Fivetran, with the current stable version being 2.3.0 and regular releases, including alpha versions for upcoming features and breaking changes.","status":"active","version":"2.3.0","language":"en","source_language":"en","source_url":"https://github.com/astronomer/airflow-provider-fivetran-async","tags":["airflow","fivetran","async","data-orchestration","elt","data-ingestion"],"install":[{"cmd":"pip install airflow-provider-fivetran-async","lang":"bash","label":"Install stable version"}],"dependencies":[{"reason":"Core dependency for any Airflow provider.","package":"apache-airflow","optional":false},{"reason":"Optional for OpenLineage integration for data lineage metadata.","package":"openlineage-airflow","optional":true}],"imports":[{"note":"Although the class is named `FivetranOperator` in the source, documentation and common usage refer to it as `FivetranOperatorAsync` to distinguish it from the synchronous operator in the legacy provider and emphasize its deferrable nature. It defaults to deferrable mode (async).","symbol":"FivetranOperatorAsync","correct":"from fivetran_provider_async.operators import FivetranOperator"},{"note":"Similar to the operator, the class is `FivetranSensor` in the source but is commonly referred to as `FivetranSensorAsync` in documentation for clarity regarding its deferrable functionality.","symbol":"FivetranSensorAsync","correct":"from fivetran_provider_async.sensors import FivetranSensor"},{"note":"Introduced in version 2.2.0, this operator specifically handles Fivetran resynchronization tasks.","symbol":"ResyncOperator","correct":"from fivetran_provider_async.operators.resync import ResyncOperator"}],"quickstart":{"code":"import os\nfrom datetime import datetime\nfrom airflow.decorators import dag\nfrom fivetran_provider_async.operators import FivetranOperator\n\nFIVETRAN_API_KEY = os.environ.get('FIVETRAN_API_KEY', 'your_fivetran_api_key')\nFIVETRAN_API_SECRET = os.environ.get('FIVETRAN_API_SECRET', 'your_fivetran_api_secret')\nFIVETRAN_CONNECTOR_ID = os.environ.get('FIVETRAN_CONNECTOR_ID', 'your_connector_id')\n\n@dag(\n    dag_id='fivetran_async_sync_example',\n    start_date=datetime(2023, 1, 1),\n    schedule=None,\n    catchup=False,\n    tags=['fivetran', 'async', 'etl']\n)\ndef fivetran_async_dag():\n    # Configure Fivetran connection in Airflow UI (Admin -> Connections)\n    # Conn Id: fivetran_default\n    # Conn Type: Fivetran\n    # Login (API Key): FIVETRAN_API_KEY\n    # Password (API Secret): FIVETRAN_API_SECRET\n\n    start_fivetran_sync = FivetranOperator(\n        task_id='start_fivetran_sync',\n        fivetran_conn_id='fivetran_default',\n        connector_id=FIVETRAN_CONNECTOR_ID,\n        deferrable=True, # This is the default behavior\n        wait_for_completion=True # This is the default behavior\n    )\n\nfivetran_async_dag()","lang":"python","description":"This quickstart demonstrates how to create a simple Airflow DAG using the `FivetranOperator` (referred to as `FivetranOperatorAsync` in docs) to trigger and monitor a Fivetran sync. Before running, configure an Airflow connection named `fivetran_default` with your Fivetran API Key and Secret."},"warnings":[{"fix":"Upgrade Python to 3.10 or higher.","message":"Version 2.3.0 dropped support for Python 3.9. Users on Python 3.9 must upgrade their Python environment or use an older provider version.","severity":"breaking","affected_versions":">=2.3.0"},{"fix":"Upgrade Apache Airflow to version 2.9 or higher.","message":"Upcoming version 2.4.0a1 drops support for Apache Airflow versions older than 2.9. Users running older Airflow versions will need to upgrade.","severity":"breaking","affected_versions":">=2.4.0a1"},{"fix":"Upgrade Apache Airflow to version 2.4 or higher (and ideally to >=2.9 for future compatibility).","message":"Version 2.2.0 dropped support for Apache Airflow 2.2 and 2.3.","severity":"breaking","affected_versions":">=2.2.0"},{"fix":"Monitor GitHub issues for resolution or implement custom retry logic for 'RESCHEDULED' states.","message":"The `FivetranOperator` (async provider) may fail if a Fivetran connector goes into a 'RESCHEDULED' state, rather than handling it gracefully. This is a known bug (GitHub Issue #107).","severity":"gotcha","affected_versions":"All versions"},{"fix":"Migrate from `airflow-provider-fivetran` to `airflow-provider-fivetran-async`, replacing `FivetranOperator` and `FivetranSensor` with their async counterparts (or the combined `FivetranOperator` from this async provider).","message":"This `airflow-provider-fivetran-async` provider is the recommended successor to the older, synchronous `airflow-provider-fivetran`. The legacy provider is deprecated in favor of this asynchronous version.","severity":"deprecated","affected_versions":"All versions of `airflow-provider-fivetran-async` vs. `airflow-provider-fivetran`"},{"fix":"Prefer using `FivetranOperator` (deferrable) with `wait_for_completion=True` (default) to handle both triggering and monitoring within a single task. Only use `FivetranSensor` if you need to monitor a Fivetran sync initiated outside of Airflow, or if the `FivetranOperator` has `wait_for_completion=False`.","message":"The `FivetranOperator` in this async provider is designed to both trigger a Fivetran sync and asynchronously monitor its completion. In most cases, a separate `FivetranSensor` is no longer needed downstream, which was common practice with the legacy synchronous provider. Using both unnecessarily consumes resources.","severity":"gotcha","affected_versions":"All versions"}],"env_vars":null,"last_verified":"2026-04-15T00:00:00.000Z","next_check":"2026-07-14T00:00:00.000Z","problems":[{"fix":"Install the package using pip: 'pip install airflow-provider-fivetran-async'.","cause":"The 'airflow-provider-fivetran-async' package is not installed in the Python environment.","error":"ModuleNotFoundError: No module named 'airflow_provider_fivetran_async'"},{"fix":"Use the correct import statement: 'from airflow_provider_fivetran_async.operators import FivetranOperator'.","cause":"The import statement is incorrect due to a typo in the module path.","error":"ImportError: cannot import name 'FivetranOperator' from 'fivetran_provider_async.operators'"},{"fix":"Ensure that the 'airflow-provider-fivetran-async' package is installed and up to date: 'pip install --upgrade airflow-provider-fivetran-async'.","cause":"The 'FivetranOperator' class is not present in the specified module, possibly due to a version mismatch or incorrect installation.","error":"AttributeError: module 'airflow_provider_fivetran_async.operators' has no attribute 'FivetranOperator'"},{"fix":"Verify that the 'conn_id' matches the one configured in the Airflow UI under Connections, and that it is set up correctly with the Fivetran API Key and Secret.","cause":"The 'conn_id' specified does not match any configured Fivetran connections in Airflow.","error":"ValueError: Invalid 'conn_id' provided for Fivetran connection"},{"fix":"Check the configuration settings and ensure all required parameters are provided and correctly set.","cause":"A variable expected to be a dictionary or list is 'None', possibly due to a missing or incorrect configuration.","error":"TypeError: 'NoneType' object is not subscriptable"}]}