Flujo de aire: Crear DAG desde un archivo independiente

0

Pregunta

En el flujo de aire, estoy tratando de hacer una función que se dedica a generar Dag en un archivo:

dynamic_dags.py:

def generate_dag(name):
    with DAG(
        dag_id=f'dag_{name}',
        default_args=args,
        start_date=days_ago(2),
        schedule_interval='5 5 * * *',
        tags=['Test'],
        catchup=False
    ) as dag:
        dummy_task=DummyOperator(
            task_id="dynamic_dummy_task",
            dag=dag
        )
    return dag

A continuación, en otro archivo, estoy tratando de importar los dags desde un archivo independiente:

load_dags.py:

from dynamic_dag import generate_dag
globals()["Dynamic_DAG_A"] = generate_dag('A')

Sin embargo, el dag no se muestran en la interfaz de usuario web. Pero si yo los hago en un solo archivo como a continuación el código, va a trabajar:

def generate_dag(name):
    with DAG(
        dag_id=f'dag_{name}',
        default_args=args,
        start_date=days_ago(2),
        schedule_interval='5 5 * * *',
        tags=['Test'],
        catchup=False
    ) as dag:
        dummy_task=DummyOperator(
            task_id="dynamic_dummy_task",
            dag=dag
        )
    return dag

globals()["Dynamic_DAG_A"] = generate_dag('A')

Me pregunto por qué hacerlo en dos archivos separados no funciona.

airflow airflow-scheduler
2021-11-21 00:44:01
1

Mejor respuesta

1

Creo que si usted está utilizando el Flujo de aire 1,10, el DAG archivos deben contener DAG y airlfow:

https://airflow.apache.org/docs/apache-airflow/1.10.15/concepts.html?highlight=airflowignore#dags

Cuando la búsqueda de Dag, el Flujo de aire sólo tiene en cuenta los archivos de python que contengan las cadenas "flujo de aire" y "DAG" de forma predeterminada. Para considerar todos los archivos de python en lugar de ello, deshabilitar el DAG_DISCOVERY_SAFE_MODE configuración de la bandera.

En el Flujo de aire 2 se ha cambiado (ligeramente - dag es sensible a las mayúsculas):

https://airflow.apache.org/docs/apache-airflow/2.2.2/concepts/dags.html

Cuando la búsqueda de Dag en el interior de la DAG_FOLDER, el Flujo de aire sólo tiene en cuenta los archivos de Python que contengan las cadenas de flujo de aire y dag (mayúsculas-minúsculas) como una optimización. Para considerar todos los archivos de Python en lugar de ello, deshabilitar el DAG_DISCOVERY_SAFE_MODE configuración de la bandera.

Creo que simplemente te pierdas "el flujo de aire' en su load_dags.py. Usted puede agregar siempre - incluidos los comentarios.

2021-11-21 19:02:47

En otros idiomas

Esta página está en otros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Slovenský
..................................................................................................................