繁体   English   中英

如何手动触发airflow dag?

[英]How to trigger airflow dag manually?

我已经在 Airflow 上工作了一段时间,调度程序没有问题,但现在我遇到了问题。

基本上我有一个脚本和 dag 准备好执行任务,但任务不会定期运行。 相反,它需要在随机时间激活。 (外部各方会告诉我们时间到了,我们会运行它。这可能会在接下来的几个月中发生很多次。)

无论如何手动触发dag? 也欢迎任何其他指示/建议。 谢谢。

您在这里有多种选择:

如果这真的是 100% 手动,您可能会使用 UI 或 CLI。 如果您希望让外部方自己间接触发它,则 API 或 Operator 将是选项。 请记住在 DAG 上设置schedule_interval=None

气流有API 您需要的方法是POST /api/experimental/dags/<DAG_ID>/dag_runs 使用此方法,您还可以为 dag 运行传递配置参数。

我们使用 Jenkins 手动触发 dag。 如果您正在使用 Jenkins,您可以查看我们的 jenkins 管道库

因此,可以通过以下方式触发 dag:

  • 使用 REST API 参考(请参阅文档

    端点-

     > POST /api/experimental/dags/<DAG_ID>/dag_runs
    1. 使用卷曲:

      curl -X POST
      http://localhost:8080/api/experimental/dags/<DAG_ID>/dag_runs
      -H '缓存控制:无缓存'
      -H '内容类型:应用程序/json'
      -d '{"conf":"{"key":"value"}"}'

    2. 使用 Python 请求:

       import requests response = requests.post(url, data=json.dumps(data), headers=headers)
  • 使用@Daniel 提到的 UI 中存在的触发器 DAG 选项

其他答案给出的示例使用“实验性”API。此 REST API 自 2.0 版以来已弃用。 请考虑使用稳定的 REST API

使用方法POST dags/<DAG_ID>/dagRuns

curl -X POST 'http://localhost:8080/api/v1/dags/<DAG_ID>/dagRuns' \
    --header 'accept: application/json' \
    --header 'Content-Type: application/json' \
    --user '<user>:<password>' \   # If authentication is used
    --data '{}'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM