web-dev-qa-db-ja.com

気流はプログラムでdagを一時停止しませんか?

複数の異なるairflowインスタンスにデプロイするデータがあり、airflow.cfgにはdags_are_paused_at_creation = Trueがありますが、この特定のデータでは、UIをクリックして手動でオンにする必要はなくオンにする必要があります。 。プログラムでそれを行う方法はありますか?

9
Ace Haidrey

airflow-rest-api-pluginプラグインを使用して、プログラムでタスクを一時停止することもできます。

DAGを一時停止します

Airflowバージョンで利用可能:1.7.0以降

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

クエリ引数:

dag_id-文字列-dagのID

subdir(オプション)-文字列-dagを検索するファイルの場所またはディレクトリ

例:

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

詳細については、を参照してください: https://github.com/teamclairvoyant/airflow-rest-api-plugin

7
x97Core

他の誰かがこの問題に遭遇した場合にそうするために、私は次の関数を作成しました:

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()
11
Ace Haidrey

dag_idを指定し、コマンドラインでこのコマンドを実行します。

airflow pause dag_id.

Airflowコマンドラインインターフェイスの詳細については、次のように入力してください。 https://airflow.incubator.Apache.org/cli.html

4
Anmol Karki

unpausepauseではありません)を探していると思います

airflow unpause DAG_ID
1
A.B