来自cli的气流传递参数

时间:2017-06-05 06:51:37

标签: airflow apache-airflow airflow-scheduler

有没有办法将参数传递给:

airflow trigger_dag dag_name {param}

我有一个监视文件目录的脚本 - 当文件移动到目标目录时我想触发dag作为参数传递文件路径。

2 个答案:

答案 0 :(得分:12)

你可以这样传递:

airflow trigger_dag --conf {"file_variable": "/path/to/file"} dag_id

然后在dag中,您可以使用模板化访问此变量,如下所示:

{{ dag_run.conf.file_variable }}

如果这不起作用,分享一个简单版本的dag可能有助于获得更好的答案。

答案 1 :(得分:11)

是的,你可以。你的Dag应该有一个像这样的Dag和Bask Task:

from airflow.operators.bash_operators import BashOperator

args = {'start_date':datetime.now(),
        'owner':'airflow',}
dag = DAG(
      dag_id='param_dag', 
      default_args=args,
      schedule_interval=None)

bash_task=BashOperator(
     task_id="bash_task" 
     bash_command= 'bash ~/path/bashscript.sh {{ dag_run.conf["parameter"] if dag_run else "" }} ', 
    //bashscript your script you want to run and the dag_run.conf will hold the parameter you want to pass
     dag=dag)

现在在您的命令行上输入命令:

 airflow trigger_dag dag_id --conf '{"parameter":"~/path" }'