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

Ace*_*rey 9 airflow apache-airflow airflow-scheduler

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

Ace*_*rey 12

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

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()
Run Code Online (Sandbox Code Playgroud)

  • 你也可以在airflow.bin.cli中使用 unpause(args='', dag=dag) 方法 (3认同)

Anm*_*rki 8

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

airflow pause dag_id.
Run Code Online (Sandbox Code Playgroud)

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


x97*_*ore 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