airflow-api 插件的安裝與使用介紹

本文轉自:https://www.cnblogs.com/ZhangShY/p/10082994.html

原文存在錯誤,使得本人踩了一天的坑,現糾正如下。學習過程可參考https://github.com/teamclairvoyant/airflow-rest-api-plugin

1. 安裝插件airflow-rest-api

1)獲取

wget https://github.com/teamclairvoyant/airflow-rest-api-plugin/archive/master.zip

2)將解壓文件plugins目錄下的rest_api_plugin.py和templates放入airflow安裝目錄下的plugins目錄中,若plugins不存在則新建
3)修改airflow.cfg文件中 plugins_folder = /airflow安裝目錄/plugins

4)重啓airflow

2. api使用介紹

2.1 獲取airflow版本

GET - http://{HOST}:{PORT}/admin/rest_api/api?api=version

2.2 獲取airflow-api-plugin的版本

GET - http://{HOST}:{PORT}/admin/rest_api/api?api=rest_api_plugin_version

2.3 渲染任務實例模板

GET - http://{HOST}:{PORT}/admin/rest_api/api?api=render

參數:
1)dag_id
2)task_id   任務id
3)execution_date    dag的執行日期,例如:2017-01-02T03:04:05
4)subdir(可選)    從中查找文件位置或目錄

2.4 操作變量

GET - http://{HOST}:{PORT}/admin/rest_api/api?api=variables

參數(均爲可選參數):
1)set:設置變量,key value
2)get:獲取變量
3)json:布爾值,反序列化json
4)default:如果變量不存在,則返回默認值
5)import:從json文件導入變量
6)export:從json文件導出變量
7)delete:刪除變量

2.5 操作連接

GET - http://{HOST}:{PORT}/admin/rest_api/api?api=connections

參數(均爲可選參數):
1)list:布爾型,列出所有連接
2)add:增加連接
3)delete:布爾型,刪除連接
4)conn_id:添加/刪除連接所需要的連接id
5)conn_id:添加連接所需要的連接url
6)conn_extra:連接的額外字段,添加連接時可選參數

2.6 暫停DAG

GET - http://{HOST}:{PORT}/admin/rest_api/api?api=pause

參數:
1)dag_id
2)subdir:可選參數,從中查找dag的文件位置或者目錄

2.7 繼續dag

GET - http://{HOST}:{PORT}/admin/rest_api/api?api=unpause

參數:
1)dag_id
2)subdir:可選參數,從中查找dag的文件位置或者目錄

2.8 調度任務失敗的依賴

GET - http://{HOST}:{PORT}/admin/rest_api/api?api=task_failed_deps

參數:
1)dag_id
2)task_id
3)execution_date
4)subdir:可選

2.9 觸發dag運行

GET - http://{HOST}:{PORT}/admin/rest_api/api?api=trigger_dag

參數:
1)dag_id
2)run_id:可選參數,用於dag運行的runid
3)conf:可選參數,傳遞給觸發dag運行的一些配置,(URL Encoded JSON)以{"key":"value"}的形式

2.10 測試任務實例,但是不檢查依賴或者在數據庫中記錄

GET - http://{HOST}:{PORT}/admin/rest_api/api?api=test

參數:
1)dag_id
2)task_id
3)execution_date
4)subdir:可選參數
5)dryrun:可選參數,布爾型,是否進行幹運行
6)task_params:可選參數,將json字典傳給task

2.11 獲取dag運行狀態

GET - http://{HOST}:{PORT}/admin/rest_api/api?api=dag_state

參數:
1)dag_id
2)execution_date
3)subdir:可選參數

2.12 運行單個task實例

GET - http://{HOST}:{PORT}/admin/rest_api/api?api=run

參數:
1)dag_id
2)task_id
3)execution_date
4)subdir:可選參數
5)mark_success:可選參數,布爾型,不運行jobs但是標記爲成功
6)force:可選參數,布爾型,忽略先前的運行狀態,無論任務是否成功都重新運行
7)pool:可選參數,資源池
8)cfg_path:可選參數,使用配置文件的路徑而不用原有的airflow.cfg
9)local:可選參數,布爾值,使用localexecute運行任務
10)ignore_all_dependencies:可選參數,布爾值,忽略所有的非關鍵依賴項,包括ignore_ti_state和ignore_task_depsstore_true
11)ignore_dependencies:可選,布爾值,忽略特定於任務的依賴關係,例如upstream, depends_on_past還有retry delay dependencies
12)ignore_depends_on_past:可選,布爾值,忽略depends_on_past依賴項,但是尊重上游
13)ship_dag:可選,布爾值,序列化dag併發送給worker
14)pickle:可選:整個dag的序列化pickle對象

2.13 某個dag的所有tasks

GET - http://{HOST}:{PORT}/admin/rest_api/api?api=list_tasks

參數:
1)dag_id
2)tree:可選參數,布爾型
3)subdir:可選參數

2.14 在制定範圍內運行dag的子部分

GET - http://{HOST}:{PORT}/admin/rest_api/api?api=backfill

參數:
1)dag_id
2)task_regex:可選參數,用於過濾特定的task_ids以進行回填正則表達式
3)start_date:覆蓋start_date YYYY-MM-DD
4)end_date:可選參數,同上覆蓋
5)mark_success:可選參數,布爾型,不運行jobs但是標記爲成功
6)local:可選參數,布爾型,使用LocalExecutor運行任務
7)donot_pickle:可選參數,不進行嘗試將dag對象發給工作人員,只告訴他們dag的運行版本
8)include_adhoc:可選參數,布爾值,包含帶有adhoc參數的dags
9)ignore_dependencies:可選參數,布爾值,忽略特定於任務的依賴關係,例如 upstream, depends_on_past, and retry delay dependencies
10)ignore_first_depends_on_past:可選參數,布爾值,僅忽略第一組任務的depends_on_past依賴關係
11)subdir:可選參數,
12)pool:可選參數,資源池
13)dry_run:可選參數,布爾值,是否空運行

2.15 列出所有的dags

GET - http://{HOST}:{PORT}/admin/rest_api/api?api=list_dags

參數: 
1)subdir:可選參數
2)report:可選參數,布爾型,顯示dagbag的加載報告

2.16 啓動kerberos票證續訂

GET - http://{HOST}:{PORT}/admin/rest_api/api?api=kerberos

參數(均爲可選參數):
1)principal
2)keytab
3)pid:pid文件位置
4)daemon:布爾值,是否爲守護進程
5)stdout:將stdout重定向到文件
6)stderr:將錯誤重定向到文件
7)log-file:日誌文件

2.17 啓動celery工作節點(worker)

GET - http://{HOST}:{PORT}/admin/rest_api/api?api=worker

參數(均爲可選參數):
1)do_pickle:布爾型,嘗試picklg DAG對象發送給worker,而不是讓worker運行他們的代碼版本
2)queues:逗號分隔的隊列列表
3)concurrency:工作進程數
4)pid:pid文件位置
5)daemon:布爾值,是否爲守護進程
6)stdout:將stdout重定向到文件
7)stderr:將錯誤重定向到文件
8)log-file:日誌文件

2.18 啓動celery工作節點(flower)

GET - http://{HOST}:{PORT}/admin/rest_api/api?api=flower

參數(均爲可選參數):
1)hostname:設置運行服務器的主機名
2)port:運行服務器的端口
3)flower_conf:flower的配置文件
4)broker_api
5)pid:pid文件位置
6)daemon:布爾值,是否爲守護進程
7)stdout:將stdout重定向到文件
8)stderr:將錯誤重定向到文件
9)log-file:日誌文件

2.19 啓動調度程序實例

GET - http://{HOST}:{PORT}/admin/rest_api/api?api=scheduler

參數(均爲可選參數):
1)dag_id
2)subdir:可選參數,從中查找dag的文件位置或者目錄
3)run-duration:設置退出前執行的秒數
4)num_runs:設置退出前執行的次數
5)do_pickle:布爾型,嘗試pickle DAG對象發送給worker,而不是讓worker運行他們的代碼版本
6)pid:pid文件位置
7)daemon:布爾值,是否爲守護進程
8)stdout:將stdout重定向到文件
9)stderr:將錯誤重定向到文件
10)log-file:日誌文件

2.20 獲取task的運行狀態

GET - http://{HOST}:{PORT}/admin/rest_api/api?api=task_state

參數:
1)dag_id
2)task_id
3)execution_date
4)subdir:可選

2.21 CRUD 對pool的操作

GET - http://{HOST}:{PORT}/admin/rest_api/api?api=pool

參數:
1)set:分別設置池插槽計數和描述。 表單中的預期輸入:NAME SLOT_COUNT POOL_DESCRIPTION
2)get:獲取池信息
3)delete:刪除池

2.22 由worker生成的日誌

GET - http://{HOST}:{PORT}/admin/rest_api/api?api=serve_logs

參數:無

2.23 清除一組任務實例

GET - http://{HOST}:{PORT}/admin/rest_api/api?api=clear

參數:
1)dag_id
2)task_regex:可選參數,用於過濾特定的task_ids以進行回填正則表達式
3)start_date:覆蓋start_date YYYY-MM-DD
4)end_date:可選參數,同上覆蓋
5)subdir:可選參數
6)upstream:可選,布爾型,包含上游任務
7)downstream:可選,布爾型,包含下游任務
8)no_confirm:可選,布爾型,不要求確認
9)only_failed:可選,布爾型,僅失敗的作業
10)only_running:可選,布爾型,僅運行的作業
11)exclude_subdags:可選,布爾型,排除子標記

2.24 發佈一個新的dag

POST - http://{HOST}:{PORT}/admin/rest_api/api?api=deploy_dag

post參數:
1)dag_file:file-上傳部署的py文件
2)force:可選,布爾型,文件已存在,是否強制上傳
3)pause:可選,布爾型,在創建時強制暫停dag並覆蓋'dags_are_paused_at_creation'配置
4)unpause(可選) - 布爾值 -  DAG在創建時將被強制取消暫停,並覆蓋'dags_are_paused_at_creation'配置

2.25 刷新一個dag

GET - http://{HOST}:{PORT}/admin/rest_api/api?api=refresh_dag

參數: 
1)dag_id

3. api響應參數:

airflow_cmd  - 字符串 - 在本地計算機上運行Airflow CLI命令
arguments  -  Dict  - 包含您傳入的參數的字典及其值
post_arguments  -  Dict  - 包含您傳入的帖子身體參數及其值的字典
call_time  - 時間戳 - 服務器接收請求的時間
output  -  String  - 調用CLI函數的文本輸出
response_time  - 時間戳 - 服務器發回響應的時間
status  - 字符串 - 響應呼叫的狀態。 (可能的值:OK,ERROR)
warning  -  String  - 從API發回的警告消息
http_response_code  - 整數 -  HTTP響應代碼
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章