【airflow】通过RESTAPI外部触发DAG执行用例(Python)

目录

概述

更新配置

官方用例

接口用例(Python)


 

概述

为了便于管理,Apache Airflow在其对象中支持RESTAPI。其官网其实针对该API的使用方法有介绍,详细的可以参考:参考文献 - Airflow REST API。由于版本升级,在Airflow 2.0以后发布了“stable REST API”。Airflow的Webserver能够接收json形式的请求,并返回json形式的响应,在请求中需定义头:

Content-type: application/json
Accept: application/json

 

更新配置

Airflow的默认配置不允许任何形式的request请求,需要修改airflow.cfg文件:

$ airflow config get-value api auth_backends
airflow.api.auth.backend.basic_auth

 

官方用例

参考官方历史版本REST API的使用频率比较高的几个测试用例:

  • 手动触发DAG&&传参
POST /api/experimental/dags/<DAG_ID>/dag_runs
curl -X POST \
    'http://localhost:8080/api/v1/dags/<DAG_ID>/dag_runs' \
    --header 'Cache-Control: no-cache' \
    --header 'Content-Type: application/json' \
    --data '{"conf":"{\"key\":\"value\"}"}'
  • 查询指定DAG的执行
GET /api/v1/dags/<DAG_ID>/dag_runs
  • 查询指定TASK的状态
GET /api/v1/dags/<DAG_ID>/tasks/<TASK_ID>
  • 手动停止DAG
GET /api/v1/dags/<DAG_ID>/paused/<string:paused> #停止时设置<string:paused>为'true'

 

接口用例(Python)

官方文档中写过,请求路由后面添加update_mask可以直接查询更新对象中的某个字段,相对于更新所有字段更加快捷,不过这里我图个简单,不使用update_mask。

def trigger_dag(dag_id, endpoint, params, user, password):
    input_data = dict()
    input_data["conf"] = params
    headers = {"Content-type":"application/json"}
    url = "http://{}/api/v1/dags/{}/dagRuns".format(endpoint, dag_id)
    response = request.post(url, data=json.dumps(input_data), auth=(user, password), header=headers)
    return response

 

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Airflow是一个基于Python的开源工作流调度和任务编排平台,它使用DAG(有向无环图)来定义任务之间的依赖关系。通过Airflow,您可以轻松地创建、调度和监控复杂的工作流。 以下是使用Airflow创建和调度DAG图的示例代码: 1. 安装Airflow: ```shell pip install apache-airflow ``` 2. 创建DAG图文件(例如,my_dag.py): ```python from datetime import datetime from airflow import DAG from airflow.operators.python_operator import PythonOperator def task1(): # 任务1的代码 def task2(): # 任务2的代码 # 创建DAGdag = DAG('my_dag', description='DAG图调度示例', schedule_interval='0 0 * * *', start_date=datetime(2022, 1, 1)) # 定义任务1和任务2 task_1 = PythonOperator(task_id='task_1', python_callable=task1, dag=dag) task_2 = PythonOperator(task_id='task_2', python_callable=task2, dag=dag) # 定义任务之间的依赖关系 task_1 >> task_2 ``` 3. 启动Airflow调度程序: ```shell airflow scheduler ``` 4. 启动Airflow Web服务器: ```shell airflow webserver -p 8080 ``` 5. 在浏览器中访问`http://localhost:8080`,您将看到Airflow的Web界面。 在Web界面中,您可以查看已定义的DAG图、运行任务、监控任务状态等。Airflow提供了丰富的功能,如任务调度、任务重试、任务监控、动态调整工作流等。 这只是一个简单的示例,您可以根据自己的需求和任务定义更复杂的DAG图。Airflow提供了更多的操作符和功能,如BashOperator、PythonOperator、BranchPythonOperator等,以及丰富的插件生态系统。 希望这些信息能帮助您开始使用Airflow进行DAG图调度!如有任何进一步的问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Felier.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值