Airflowでは、「このDAGはWebサーバーのDagBagオブジェクトでは使用できません。スケジューラーがメタデータデータベースでアクティブとしてマークしたため、このリストに表示されます」というエラーにどのように対処すればよいですか?
新しいDAGをAirflowサーバーにコピーし、試してみました。
airflow resetdb
)、ウェブサーバーとスケジューラーを再起動しますairflow backfill
(ここで推奨 Airflow "このDAGはWebサーバーのDagBagオブジェクトでは使用できません" )airflow trigger_dag
スケジューラログには、処理中でエラーが発生していないことが示されています。CLIを使用して操作し、その状態を表示できますが、Web UIには表示されません。
編集:Webサーバーとスケジューラーは、同じairflow.cfgを使用して同じマシンで実行されています。 Dockerで実行されていません。
それらは Supervisor によって実行され、同じユーザー(airflow)として実行されます。 airflowユーザーは、すべてのdagファイルに対する読み取り、書き込み、実行の権限を持っています。
ちょうど私自身がこの問題を抱えていました。権限を変更し、メタデータベースをリセットし、ウェブサーバーを再起動した後、状況を修正するためにコードを変更する可能性さえありましたが、起こりませんでした。
しかし、ウェブサーバーを停止していても、gunicornプロセスがまだ実行されていることに気付きました。これらのプロセスを強制終了し、すべてのバックアップを開始すると成功しました
これは私を助けました...
pkill -9 -f "airflow scheduler"
pkill -9 -f "airflow webserver"
pkill -9 -f "gunicorn"
次に、エアフロースケジューラとウェブサーバーを再起動します。
Dockerイメージからインストールされたエアフローで同じ問題が発生しました
私がしたことは:
1-すべてのファイル.pycを削除します
2-を使用してメタデータデータベースを削除します。
for t in ["xcom", "task_instance", "sla_miss", "log", "job", "dag_run", "dag" ]:
sql="delete from {} where dag_id='{}'".format(t, dag_input)
hook.run(sql, True)
3-ウェブサーバーとスケジューラを再起動します
4- airflow updatedbを実行します
それは私のために問題を解決しました。
エラーの唯一の原因は、airflow_home-dags_folder構成パラメーターがスケジューラー、webUI、およびコマンド行インターフェースで同じ場合:
This DAG isn't available in the webserver DagBag object
pythonスクリプトのファイル権限またはエラーである可能性があります。
チェックしてください