exception - DAG 从 Web 界面执行 OK,但在通过命令行运行时“失败”
问题描述
我正在尝试在开发新功能期间使用命令行界面测试我的 DAG,但我无法做到这一点。我的 DAG,DAG_ID=sample_dag,文件:sample_dag.py 位于 ~/airflow/dags 文件夹(Ubuntu)中,可以通过 Web 界面执行(通过单击播放图标)。DAG 中有几个 BASH OPERATOR 调用,每个脚本都正确执行,生成日志输出。
但是,我无法通过命令行访问相同的 DAG 功能,从同一个文件夹运行,例如:airflow render sample_dag all 2019-01-14T06:04:05
上述命令的输出是:Test Dag Begin Test Dag End ****airflow.exceptions.AirflowException: dag_id could not be found: sample_dag。dag 不存在或无法解析。****
执行 DAG 中的调试打印,但不调用 Bash 脚本(不生成脚本日志)。
import datetime as dt
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
default_args = {
'owner': 'airflow',
'start_date': dt.datetime(2019, 1, 12),
'retries': 1,
'retry_delay': dt.timedelta(minutes=5),
'email_on_failure': False,
'email_on_retry': False,
}
dag = DAG('sample_dag', default_args=default_args, schedule_interval=None)
t0 = BashOperator(
task_id='all', bash_command='echo "Starting Tests..."', dag=dag)
t1 = BashOperator(
task_id='test_1',
bash_command='python3 /home/ubuntu/scripts/test_1.py &>> /home/ubuntu/scripts/test.log',
dag=dag)
t2 = BashOperator(
task_id='test_2',
bash_command='python3 /home/ubuntu/scripts/test_2.py &>> /home/ubuntu/scripts/test.log',
dag=dag)
t3 = BashOperator(
task_id='final', bash_command='echo "Client Profile Tests Complete"', dag=dag)
print("Test Dag Begin")
t0 >> t1
t0 >> t2
t1 >> t3
t2 >> t3
print("Test Dag End")
解决方案
airflow render
cli 命令仅呈现模板化的运算符的参数。它不会运行你的 DAG。
airflow render [-h] [-sd SUBDIR] dag_id task_id execution_date
你应该使用trigger_dag
cli 来运行你的 dag
推荐阅读
- javascript - 提交php表单后如何返回查看提交的数据进行修改
- c++ - 为什么赋值运算符在某些库中是私有的?(例如 RapidJson)
- sql - 如何将数据行转换为新列?
- verilog - verilog 计数器不是从 0 开始
- python - 从 pytorch 访问文件夹中的图像并将其提供给 CNN 预测的推理方法
- flutter - 没有为“对象”类型定义运算符“[]”。尝试在颤振升级后定义运算符'[]'
- visual-studio - 如何修复 Visual Studio 2019 中的错误“Visual Studio 的 Oracle 开发人员工具配置不正确”?
- python - 类属性默认值不接收模拟
- python-3.x - 如何在 python kivy 框架中创建音频控制器?
- python-3.x - 文件中的正则表达式字符串替换