【问题标题】:Airflow unpause dag programmatically?气流以编程方式取消暂停dag?
【发布时间】:2017-06-05 01:01:28
【问题描述】:

我有一个 dag,我们将部署到多个不同的气流实例,在 airflow.cfg 中我们有 dags_are_paused_at_creation = True,但对于这个特定的 dag,我们希望无需手动打开它,只需单击用户界面。有没有办法以编程方式做到这一点?

【问题讨论】:

    标签: airflow apache-airflow airflow-scheduler


    【解决方案1】:

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

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

    【讨论】:

    • 你也可以在airflow.bin.cli中使用unpause(args='', dag=dag)方法
    【解决方案2】:

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

    暂停 DAG

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

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

    查询参数:

    dag_id - 字符串 - dag 的 id

    subdir (optional) - string - 文件位置或目录 找小鬼

    例子:

    http://{HOST}:{PORT}/admin/rest_api/api?api=pause&dag_id=test_id

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

    【讨论】:

      【解决方案3】:

      提供你的 dag_id 并在你的命令行上运行这个命令。

      airflow pause dag_id.
      

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

      【讨论】:

      【解决方案4】:

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

      airflow unpause DAG_ID
      

      【讨论】:

        【解决方案5】:

        以下 cli 命令应该可以根据最近的文档工作。

        airflow dags unpause dag_id
        

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

        【讨论】:

          【解决方案6】:

          Airflow 的 REST API 提供了一种使用 DAG 补丁 API 的方法:我们需要使用查询参数 ?update_mask=is_paused 更新 dag,并将布尔值作为请求正文发送。

          参考:https://airflow.apache.org/docs/apache-airflow/stable/stable-rest-api-ref.html#operation/patch_dag

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2021-07-09
            • 1970-01-01
            • 2022-08-11
            • 2017-05-22
            • 2021-06-20
            • 1970-01-01
            • 2013-02-15
            相关资源
            最近更新 更多