Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 动态DAG创建在Apache中未按预期工作_Python 3.x_Airflow - Fatal编程技术网

Python 3.x 动态DAG创建在Apache中未按预期工作

Python 3.x 动态DAG创建在Apache中未按预期工作,python-3.x,airflow,Python 3.x,Airflow,我试图理解动态DAG是如何在Apache airflow中创建的,因为在我的项目中创建动态DAG需要这个 以下是iam的链接: 下面是用于创建示例hello world动态DAG的代码块。(基于输入参数创建动态DAG) 我们的期望是创建9个这样的DAG。但是我可以看到,一旦我用python3 code\u sample.py编译了上面的代码块,它就会创建9个DAG,但是嵌入DAG中的代码就是整个示例代码 但据我所知,创建的dag应该只有下面的代码块,在上面的示例代码块中的create_dag方法

我试图理解动态DAG是如何在Apache airflow中创建的,因为在我的项目中创建动态DAG需要这个

以下是iam的链接:

下面是用于创建示例hello world动态DAG的代码块。(基于输入参数创建动态DAG)

我们的期望是创建9个这样的DAG。但是我可以看到,一旦我用
python3 code\u sample.py
编译了上面的代码块,它就会创建9个DAG,但是嵌入DAG中的代码就是整个示例代码

但据我所知,创建的dag应该只有下面的代码块,在上面的示例代码块中的create_dag方法中可用

预期的DAG代码:

from datetime import datetime

 from airflow import DAG

 from airflow.operators.python_operator import PythonOperator
def hello_world_py(*args):
   print('Hello World')
   print('This is DAG: {}'.format(str(dag_number)))

dag = DAG(dag_id,
      schedule_interval=schedule,
      default_args=default_args)

with dag:
   t1 = PythonOperator(
    task_id='hello_world',
    python_callable=hello_world_py,
    dag_number=dag_number)
from datetime import datetime

from airflow import DAG

from airflow.operators.python_operator import PythonOperator


def create_dag(dag_id,
               schedule,
               dag_number,
               default_args):

    def hello_world_py(*args):
        print('Hello World')
        print('This is DAG: {}'.format(str(dag_number)))

    dag = DAG(dag_id,
              schedule_interval=schedule,
              default_args=default_args)

    with dag:
        t1 = PythonOperator(
            task_id='hello_world',
            python_callable=hello_world_py,
            dag_number=dag_number)

    return dag


# build a dag for each number in range(10)
for n in range(1, 10):
    dag_id = 'hello_world_{}'.format(str(n))

    default_args = {'owner': 'airflow',
                    'start_date': datetime(2018, 1, 1)
                    }

    schedule = '@daily'

    dag_number = n

    globals()[dag_id] = create_dag(dag_id,
                                  schedule,
                                  dag_number,
                                  default_args)
实际DAG代码:

from datetime import datetime

 from airflow import DAG

 from airflow.operators.python_operator import PythonOperator
def hello_world_py(*args):
   print('Hello World')
   print('This is DAG: {}'.format(str(dag_number)))

dag = DAG(dag_id,
      schedule_interval=schedule,
      default_args=default_args)

with dag:
   t1 = PythonOperator(
    task_id='hello_world',
    python_callable=hello_world_py,
    dag_number=dag_number)
from datetime import datetime

from airflow import DAG

from airflow.operators.python_operator import PythonOperator


def create_dag(dag_id,
               schedule,
               dag_number,
               default_args):

    def hello_world_py(*args):
        print('Hello World')
        print('This is DAG: {}'.format(str(dag_number)))

    dag = DAG(dag_id,
              schedule_interval=schedule,
              default_args=default_args)

    with dag:
        t1 = PythonOperator(
            task_id='hello_world',
            python_callable=hello_world_py,
            dag_number=dag_number)

    return dag


# build a dag for each number in range(10)
for n in range(1, 10):
    dag_id = 'hello_world_{}'.format(str(n))

    default_args = {'owner': 'airflow',
                    'start_date': datetime(2018, 1, 1)
                    }

    schedule = '@daily'

    dag_number = n

    globals()[dag_id] = create_dag(dag_id,
                                  schedule,
                                  dag_number,
                                  default_args)

让我知道是什么造成了上述问题

单击“代码”选项卡时,您在Airflow UI中看到的代码只是整个
.py
文件源代码。请参见如何实现此功能:


这不是问题,但工作正常。昨天,我将我的多个DAG移到了动态DAG。每个dag的详细代码中显示的代码都是相同的。我使用variable&xcome让动态dag与不同的输入一起工作。