Fluxo de ar: Criar DAG partir de um ficheiro separado

0

Pergunta

No fluxo de ar, o que eu estou tentando fazer uma função que é dedicado a gerar DAGs em um arquivo:

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

Em seguida, em um outro arquivo que eu estou tentando importar os dags a partir de um arquivo separado:

load_dags.py:

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

No entanto, os dags não são exibidos na INTERFACE do usuário da web. Mas, se eu faço-los em um único arquivo, conforme código abaixo, ele vai funcionar:

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')

Eu estou querendo saber por que fazê-lo em dois arquivos separados não funciona.

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

Melhor resposta

1

Eu acho que se você estiver usando o Fluxo de ar 1.10, em seguida, a DAG arquivos devem conter DAG e airlfow:

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

Quando procurar para DAGs, o Fluxo de ar apenas considera python arquivos que contêm seqüências de caracteres "fluxo" e "DAG" por padrão. Para considerar todos os arquivos python, em vez disso, desactive o DAG_DISCOVERY_SAFE_MODE de configuração de sinalizador.

No Fluxo de ar 2 foi alterado (ligeiramente - dag é sensível a maiúsculas e minúsculas):

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

Quando procurar para DAGs dentro do DAG_FOLDER, o Fluxo de ar apenas considera Python arquivos que contêm seqüências de caracteres de fluxo de ar e dag (caso-de modo insensível) como uma otimização. Para considerar todos os arquivos Python, em vez disso, desactive o DAG_DISCOVERY_SAFE_MODE de configuração de sinalizador.

Eu acho que você simplesmente perder 'o fluxo de ar" em seu load_dags.py. Você pode adicioná-lo onde quer, incluindo comentários.

2021-11-21 19:02:47

Em outros idiomas

Esta página está em outros idiomas

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