【发布时间】:2017-06-05 06:51:36
【问题描述】:
有没有办法将参数传递给:
airflow trigger_dag dag_name {param}
?
我有一个监视文件目录的脚本 - 当文件移动到目标目录时,我想触发 dag 作为参数传递文件路径。
【问题讨论】:
标签: airflow apache-airflow airflow-scheduler
有没有办法将参数传递给:
airflow trigger_dag dag_name {param}
?
我有一个监视文件目录的脚本 - 当文件移动到目标目录时,我想触发 dag 作为参数传递文件路径。
【问题讨论】:
标签: airflow apache-airflow airflow-scheduler
你可以这样传递:
airflow trigger_dag --conf {"file_variable": "/path/to/file"} dag_id
然后在您的 dag 中,您可以使用以下模板访问此变量:
{{ dag_run.conf.file_variable }}
如果这不起作用,分享一个简单版本的 dag 可能有助于获得更好的答案。
【讨论】:
param = "{{dag_run.conf.get('file_variable')}}" 的顶部设置一个全局变量,例如 param。然后您就可以在文件中的任何位置使用param 变量。
是的,你可以。你的 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" }'
【讨论】: