气流取消暂停DAG编程?

问题描述:

我有,我们将部署到多个不同的气流情况,并在我们的airflow.cfg我们dags_are_paused_at_creation = True但对于这个特定的DAG我们希望它被打开,而无需通过点击UI人工手动做一个DAG。有没有办法做到这一点编程?气流取消暂停DAG编程?

气流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

我创建了下面的函数这样做,如果别人运行到这个问题: 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 –

供应的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我有相同的代码,所以是的,我只会用这个。 –