複数の異なるairflowインスタンスにデプロイするデータがあり、airflow.cfgにはdags_are_paused_at_creation = True
がありますが、この特定のデータでは、UIをクリックして手動でオンにする必要はなくオンにする必要があります。 。プログラムでそれを行う方法はありますか?
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
他の誰かがこの問題に遭遇した場合にそうするために、私は次の関数を作成しました:
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()
dag_idを指定し、コマンドラインでこのコマンドを実行します。
airflow pause dag_id.
Airflowコマンドラインインターフェイスの詳細については、次のように入力してください。 https://airflow.incubator.Apache.org/cli.html
unpause
(pause
ではありません)を探していると思います
airflow unpause DAG_ID