气流以编程方式取消暂停?

时间:2017-06-05 01:01:29

标签: airflow apache-airflow airflow-scheduler

我有一个dag,我们将部署到多个不同的气流实例,在我们的airflow.cfg中我们有dags_are_paused_at_creation = True但是对于这个特定的dag,我们希望打开它而不必通过单击手动在UI上。有没有办法以编程方式进行?

5 个答案:

答案 0 :(得分:9)

如果有其他人遇到此问题,我创建了以下功能:

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()

答案 1 :(得分:7)

airflow-rest-api-plugin插件也可用于以编程方式暂停任务。

  

暂停DAG

     

适用于Airflow版本:1.7.0或更高版本

     

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

     

查询参数:

     

dag_id - string - dag的id

     

subdir(可选) - 字符串 - 来自的文件位置或目录   寻找dag

     

示例:

     

的http:// {HOST}:{PORT} /管理/ rest_api / API的API =暂停&安培; dag_id =为test_id

查看更多详情: https://github.com/teamclairvoyant/airflow-rest-api-plugin

答案 2 :(得分:3)

提供dag_id并在命令行上运行此命令。

airflow pause dag_id.

有关气流命令行界面的更多信息:https://airflow.incubator.apache.org/cli.html

答案 3 :(得分:0)

我认为您正在寻找unpause(不是pause

airflow unpause DAG_ID

答案 4 :(得分:0)

以下 cli 命令应该适用于最近的文档。

airflow dags unpause dag_id

https://airflow.apache.org/docs/apache-airflow/stable/cli-and-env-variables-ref.html#unpause