2017-06-05 82 views
2

我有,我們將部署到多個不同的氣流情況,並在我們的airflow.cfg我們dags_are_paused_at_creation = True但對於這個特定的DAG我們希望它被打開,而無需通過點擊UI人工手動做一個DAG。有沒有辦法做到這一點編程?氣流取消暫停DAG編程?

回答

1

氣流REST的API-plugin插件也可用於問題地暫停的任務。

暫停一個DAG

可在氣流版本:1.7.0或更高

GET - HTTP:// {HOST}:{PORT} /管理/ rest_api/API的API =暫停

查詢參數:

dag_id - 字符串 - 字符串 - - 文件位置達格

子目錄(可選)的ID或目錄從中 外表爲DAG

實例:

HTTP:// {HOST}:{PORT} /管理/ rest_api/API的API =暫停& dag_id =爲test_id

詳情請見: https://github.com/teamclairvoyant/airflow-rest-api-plugin

3

我創建了下面的函數這樣做,如果別人運行到這個問題: import airflow.settings from airflow.models import DagModel def unpause_dag(dag): """ A way to programatically unpause a DAG. :param dag: DAG object :return: dag.is_paused is now False """ session = airflow.settings.Session() try: qry = session.query(DagModel).filter(DagModel.dag_id == dag.dag_id) d = qry.first() d.is_paused = False session.commit() except: session.rollback() finally: session.close()

+0

你也可以使用取消暫停(參數=「」,DAG = DAG)方法airflow.bin.cli –

0

供應的dag_id和你的命令行上運行此命令。

airflow pause dag_id. 

對於氣流命令行界面的更多信息:https://airflow.incubator.apache.org/cli.html

+0

真棒,無法相信我錯過了這一點。不完全是編程,但仍然可以只使用一個BashOperator來運行或使用該子模塊來執行它。我也看到,現在這裏https://github.com/apache/incubator-airflow/blob/master/airflow/bin/cli.py#L307我有相同的代碼,所以是的,我只會用這個。 –