使用气流测试与使用 DebugExecutor 调试气流任务

par*_*lov 6 testing debugging airflow

我正在寻找在 IDE 中运行/调试任务和 dags 的最佳方法。我发现有两种方法可以做到这一点。airflow test我可以在调试模式下针对特定 dag 和可选任务运行命令。另一种方法是使用DebugExecutor并运行特定的 dag。我发现这两种方式都需要 Airflow 数据库启动并运行,并且所有池都已配置(可能还有队列)。我的问题是:

  1. 这两者之间的主要区别是什么?
  2. 是否airflow test使用DebugExecutor在幕后
  3. 有没有一种方法可以在不运行 Airflow 数据库和创建依赖池和队列的情况下运行/调试 dags 和任务?

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)