Airflow 来自cli的气流通过参数
是否有方法将参数传递给:Airflow 来自cli的气流通过参数,airflow,apache-airflow,airflow-scheduler,Airflow,Apache Airflow,Airflow Scheduler,是否有方法将参数传递给: airflow trigger_dag dag_name {param} ? 我有一个监控文件目录的脚本——当文件移动到目标目录时,我想触发dag,并将其作为参数传递到文件路径。可以。您的Dag应该有一个Dag和一个Bask任务,如下所示: from airflow.operators.bash_operators import BashOperator args = {'start_date':datetime.now(), 'owner':'ai
airflow trigger_dag dag_name {param}
?
我有一个监控文件目录的脚本——当文件移动到目标目录时,我想触发dag,并将其作为参数传递到文件路径。可以。您的Dag应该有一个Dag和一个Bask任务,如下所示:
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 --conf {"file_variable": "/path/to/file"} dag_id
现在,在命令行中键入以下命令:
airflow trigger_dag dag_id --conf '{"parameter":"~/path" }'
您可以这样传递它:
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 --conf {"file_variable": "/path/to/file"} dag_id
然后,在dag中,可以使用模板访问此变量,如下所示:
{{ dag_run.conf.file_variable }}
如果这不起作用,共享一个简单版本的dag可能有助于获得更好的答案。我的任务是一个蟒蛇操作员,而不是一个机器人BashOperator@bsd例如,如果你不想使用模板,该怎么办?@melchoir55我在非模板的情况下玩了一些把戏。在DAG定义文件的顶部设置全局变量,例如
param
,param=“{{DAG_run.conf.get('file_variable')}}”
。然后可以在文件中的任何位置使用param
变量。