如何暂停/取消暂停气流中的多个 dags
How to pause / Un pause multiple dags in airflow
我们有 100 个前缀为“dag_EDW_HC_*”的 dag。我们有以下命令暂停 dag
Command: airflow pause dag_id
有什么方法可以一次性暂停所有 100 个 dags“dag_EDW_HC_*”..(在 python 中以编程方式或任何其他方式)..?
我能想到的绝对最简单(并且可能最快)的方法是更新数据库:
UPDATE dag
SET is_paused = false
WHERE dag_id LIKE 'dag_EDW_HC%';
如果您想定期执行此操作,您可以专门为此目的创建一个 DAG,并为此创建相应的 PythonOperator
,并在触发 DAG 时指定参数。
从 运行 任务实例(在我们传递给 PythonOperator
的 python_callable
函数中或在自定义运算符的 execute
方法中)您可以访问 DagBag
对象,其中包含加载到 Airflow 环境中的所有 DAG 的 dag id,您可以使用它来获取 DagModel
-s,您可以循环遍历并暂停所有 DAG:
def python_callable():
dag_bag = DagBag(read_dags_from_db=False)
for dag_id_ in dag_bag.dag_ids:
dag_model = airflow.models.dag.DagModel.get_dagmodel(dag_id_)
dag_model.set_is_paused(True)
当前代码适用于 2.0.1
版本,不同版本的 Airflow 可能有所不同。如果此调用不适合您,您应该检查您的 Airflow 服务器版本的文档。
我们有 100 个前缀为“dag_EDW_HC_*”的 dag。我们有以下命令暂停 dag
Command: airflow pause dag_id
有什么方法可以一次性暂停所有 100 个 dags“dag_EDW_HC_*”..(在 python 中以编程方式或任何其他方式)..?
我能想到的绝对最简单(并且可能最快)的方法是更新数据库:
UPDATE dag
SET is_paused = false
WHERE dag_id LIKE 'dag_EDW_HC%';
如果您想定期执行此操作,您可以专门为此目的创建一个 DAG,并为此创建相应的 PythonOperator
,并在触发 DAG 时指定参数。
从 运行 任务实例(在我们传递给 PythonOperator
的 python_callable
函数中或在自定义运算符的 execute
方法中)您可以访问 DagBag
对象,其中包含加载到 Airflow 环境中的所有 DAG 的 dag id,您可以使用它来获取 DagModel
-s,您可以循环遍历并暂停所有 DAG:
def python_callable():
dag_bag = DagBag(read_dags_from_db=False)
for dag_id_ in dag_bag.dag_ids:
dag_model = airflow.models.dag.DagModel.get_dagmodel(dag_id_)
dag_model.set_is_paused(True)
当前代码适用于 2.0.1
版本,不同版本的 Airflow 可能有所不同。如果此调用不适合您,您应该检查您的 Airflow 服务器版本的文档。