我尝试使用以下Dag
安装python需求import airflow
from datetime import datetime, timedelta
from airflow.operators.bash_operator import BashOperator
import logging
args = {
'owner': 'airflow',
'start_date': airflow.utils.dates.days_ago(1),
'provide_context': True
}
dag = airflow.DAG(
'set_up_python',
schedule_interval="@once",
default_args=args,
max_active_runs=1)
t1 = BashOperator(
task_id= 'echo_varconf_path',
bash_command="echo {{ var.conf_path }}",
dag=dag
)
t2 = BashOperator(
task_id= 'install_python_requirements',
bash_command="pip install {{ var.conf_path }}/requirements.txt",
dag=dag
)
在我设置变量conf_path之前,我无法在bash命令中找到变量。在日志中,似乎忽略了{{var.conf_path}}部分:
[2018-03-29 23:56:25,858] {{base_task_runner.py:98}}信息 - 子任务: [2018-03-29 23:56:25,858] {{bash_operator.py:88}}信息 - 正在运行 命令:pip install /requirements.txt [2018-03-29 23:56:25,866] {{base_task_runner.py:98}} INFO - 子任务:[2018-03-29 23:56:25,866] {{bash_operator.py:97}}信息 - 输出:[2018-03-29 23:56:26,688] {{base_task_runner.py:98}} INFO - 子任务:[2018-03-29 23:56:26,687] {{bash_operator.py:101}}信息 - 无效要求: '/requirements.txt'
正如你在dag定义中看到的那样,我尝试在第一个任务中输出变量,这个变量的输出也是空的:
[2018-03-29 23:56:25,856] {{base_task_runner.py:98}} INFO - 子任务: [2018-03-29 23:56:25,856] {{bash_operator.py:88}}信息 - 正在运行 命令:echo [2018-03-29 23:56:25,866] {{base_task_runner.py:98}} 信息 - 子任务:[2018-03-29 23:56:25,865] {{bash_operator.py:97}}信息 - 输出: