跳到主要内容

Airflow 手动触发

Apache Airflow 是一个强大的工作流调度工具,通常用于自动化任务的调度和执行。然而,在某些情况下,您可能需要手动触发DAG(有向无环图)的运行。本文将详细介绍如何在Airflow中手动触发DAG,并探讨其使用场景和操作步骤。

什么是手动触发?

手动触发是指在Airflow中通过用户操作(而非调度器自动触发)来启动DAG的运行。这种方式适用于以下场景:

  • 测试新创建的DAG。
  • 在特定条件下需要立即执行任务。
  • 调试或排查问题。

如何手动触发DAG

1. 通过Airflow UI手动触发

Airflow提供了一个直观的Web界面,您可以通过它轻松地手动触发DAG。

操作步骤:

  1. 登录Airflow Web UI。
  2. 在DAGs列表中找到您想要触发的DAG。
  3. 点击DAG名称进入详情页面。
  4. 点击右上角的“Trigger DAG”按钮。
  5. 在弹出的对话框中,您可以输入配置参数(如果需要),然后点击“Trigger”按钮。

示例:

假设您有一个名为 example_dag 的DAG,您可以通过以下步骤手动触发它:

  1. 打开Airflow UI。
  2. 在DAGs列表中找到 example_dag
  3. 点击 example_dag 进入详情页面。
  4. 点击“Trigger DAG”按钮。
  5. 在弹出的对话框中,点击“Trigger”按钮。

2. 通过Airflow CLI手动触发

除了通过UI,您还可以使用Airflow的命令行接口(CLI)来手动触发DAG。

操作步骤:

  1. 打开终端。

  2. 使用以下命令触发DAG:

    bash
    airflow dags trigger <dag_id>

    其中 <dag_id> 是您想要触发的DAG的ID。

示例:

假设您有一个名为 example_dag 的DAG,您可以通过以下命令手动触发它:

bash
airflow dags trigger example_dag

3. 通过Airflow API手动触发

Airflow还提供了REST API,您可以通过编程方式手动触发DAG。

操作步骤:

  1. 获取Airflow API的访问令牌。
  2. 使用HTTP POST请求触发DAG。

示例:

假设您有一个名为 example_dag 的DAG,您可以通过以下Python代码手动触发它:

python
import requests

url = "http://localhost:8080/api/v1/dags/example_dag/dagRuns"
headers = {
"Authorization": "Bearer <your_token>",
"Content-Type": "application/json"
}
data = {
"conf": {}
}

response = requests.post(url, headers=headers, json=data)
print(response.json())

实际应用场景

场景1:测试新创建的DAG

在开发新的DAG时,您可能需要多次测试其逻辑和任务执行情况。手动触发可以帮助您快速验证DAG的正确性,而无需等待调度器自动触发。

场景2:紧急任务执行

在某些情况下,您可能需要立即执行某个任务,例如修复数据问题或处理紧急请求。手动触发可以确保任务立即执行,而不受调度器的时间限制。

场景3:调试与排查问题

当DAG运行失败或出现异常时,手动触发可以帮助您复现问题并进行调试。通过手动触发,您可以更灵活地控制任务的执行顺序和参数。

总结

手动触发是Airflow中一个非常有用的功能,适用于测试、紧急任务执行和调试等多种场景。通过Airflow UI、CLI或API,您可以轻松地手动触发DAG的运行。掌握这一技能将帮助您更高效地管理和调度工作流。

附加资源与练习

  • 练习1:创建一个简单的DAG,并通过Airflow UI手动触发它。
  • 练习2:使用Airflow CLI手动触发一个DAG,并观察其运行日志。
  • 练习3:编写一个Python脚本,通过Airflow API手动触发DAG。

通过以上练习,您将更深入地理解Airflow手动触发的操作和应用场景。祝您学习愉快!