Python 如何在airflow中动态创建任务

Python 如何在airflow中动态创建任务,python,airflow,Python,Airflow,我不知道如何在计划时间在airflow中动态创建任务。我的Dag是在知道运行时需要多少任务之前创建的。也就是说,在每个dag触发器上,我希望传递要处理的目录,以便为以下dag创建任务列表 到目前为止,我什么都想不出来 args = { 'owner': 'airflow', 'start_date': datetime(2004, 11, 12), } dag = DAG( dag_id='dyn_test', default_args=args, sc

我不知道如何在计划时间在airflow中动态创建任务。我的Dag是在知道运行时需要多少任务之前创建的。也就是说,在每个dag触发器上,我希望传递要处理的目录,以便为以下dag创建任务列表

到目前为止,我什么都想不出来

args = {
    'owner': 'airflow',
    'start_date': datetime(2004, 11, 12),
}

dag = DAG(
    dag_id='dyn_test',
    default_args=args,
    schedule_interval='@once'
)


dir = '/home/uname/dir'
filesInDir = next(os.walk(dir))[2] 

for file in filesInDir:
    task1 = # change 'file' structure
    task2 = # store changed 'file'

    task1 >> task2
在这里,我应该如何在触发Dag时传递'dir'变量,以便task1和task2根据'dir'中存在的文件数运行。

您可以使用或环境变量

# Using Airflow Variables
from airflow.models import Variable
dir = Variable.get("dir")

# Using Env Vars
import os
dir1= os.environ["dir1"]

args = {
    'owner': 'airflow',
    'start_date': datetime(2004, 11, 12),
}

dag = DAG(
    dag_id='dyn_test',
    default_args=args,
    schedule_interval='@once'
)


filesInDir = next(os.walk(dir))[2] 

for file in filesInDir:
    task1 = # change 'file' structure
    task2 = # store changed 'file'

    task1 >> task2

感谢您的回复,但是在通过rest(而不是从UI)触发Dag之前,如何设置变量。您可以使用Airflow CLI。目前无法使用API