[Python] How to have a mix of both Celery Executor and Kubernetes Executor in Apache Airflow?

Discussão em 'Python' iniciado por Stack, Fevereiro 28, 2025.

  1. Stack

    Stack Membro Participativo

    I have multiple dags using Celery Executor but I want one particular dag to run using Kubernetes Executor. I am unable to deduce a good and reliable way to achieve this.

    I have an airflow.cfg in which I have declared CeleryExecutor to be used. And I don't want to change it since it is really needed in all the dags but one.

    # The executor class that airflow should use. Choices include
    # SequentialExecutor, LocalExecutor, CeleryExecutor
    executor = CeleryExecutor


    My dag code:

    from datetime import datetime, timedelta

    from airflow import DAG
    from airflow.contrib.operators.kubernetes_pod_operator import \
    KubernetesPodOperator
    from airflow.operators.dummy_operator import DummyOperator

    default_args = {
    'owner': 'airflow',
    'depends_on_past': False,
    'start_date': datetime.utcnow(),
    'email': ['airflow@example.com'],
    'email_on_failure': False,
    'email_on_retry': False,
    'retries': 1,
    'retry_delay': timedelta(minutes=5)
    }

    dag = DAG(
    'kubernetes_sample_1', default_args=default_args)


    start = DummyOperator(task_id='run_this_first', dag=dag)

    passing = KubernetesPodOperator(namespace='default',
    image="Python:3.6",
    cmds=["Python", "-c"],
    arguments=["print('hello world')"],
    labels={"foo": "bar"},
    name="passing-test",
    task_id="passing-task",
    get_logs=True,
    dag=dag
    )

    failing = KubernetesPodOperator(namespace='default',
    image="ubuntu:1604",
    cmds=["Python", "-c"],
    arguments=["print('hello world')"],
    labels={"foo": "bar"},
    name="fail",
    task_id="failing-task",
    get_logs=True,
    dag=dag
    )

    passing.set_upstream(start)
    failing.set_upstream(start)



    I can put an if-else condition and then change the value from the point where Airflow picks up the configuration. If this sounds right, please tell me the paths and the files. Although I was hoping to get a more mature method, if it exists.

    Continue reading...

Compartilhe esta Página