par*_*lov 6 testing debugging airflow
我正在寻找在 IDE 中运行/调试任务和 dags 的最佳方法。我发现有两种方法可以做到这一点。airflow test我可以在调试模式下针对特定 dag 和可选任务运行命令。另一种方法是使用DebugExecutor并运行特定的 dag。我发现这两种方式都需要 Airflow 数据库启动并运行,并且所有池都已配置(可能还有队列)。我的问题是:
airflow test使用DebugExecutor在幕后mik*_*laj 11
这两者之间的主要区别是什么?
调试执行器运行完整的 DAG 运行,以便您可以测试触发规则。
airflow test命令只运行一项任务。
这一点在 Airflow 2.0 中表现得更加清晰。我们有单独的命令:
airflow dags test- 启动一次 DAG 运行DebugExecutor。airflow tasks test- 开始一项任务。气流测试是否
DebugExecutor在引擎盖下使用?
不。如果您使用DebugExecutor,则需要运行完整的调度程序。如果使用该airflow task命令,则仅执行工作程序正在执行的代码。
有没有一种方法可以在不运行 Airflow 数据库和创建依赖池和队列的情况下运行/调试 dags 和任务?
您可以加载 DAG DagBag,然后调用任务的执行方法。
from airflow.model.dagbag import DagBag
dag_file_path = "/home/test-user/dags/dag-file.py"
dagbag = DagBag(dag_folder=dag_file_path)
dagbag.dags['test-dag-id'].task_dict['task-id'].execute({})
Run Code Online (Sandbox Code Playgroud)