web-dev-qa-db-ja.com

エアフロー:新しいDAGがWebサーバーで見つかりません

Airflowでは、「このDAGはWebサーバーのDagBagオブジェクトでは使用できません。スケジューラーがメタデータデータベースでアクティブとしてマークしたため、このリストに表示されます」というエラーにどのように対処すればよいですか?

新しいDAGをAirflowサーバーにコピーし、試してみました。

スケジューラログには、処理中でエラーが発生していないことが示されています。CLIを使用して操作し、その状態を表示できますが、Web UIには表示されません。

編集:Webサーバーとスケジューラーは、同じairflow.cfgを使用して同じマシンで実行されています。 Dockerで実行されていません。

それらは Supervisor によって実行され、同じユーザー(airflow)として実行されます。 airflowユーザーは、すべてのdagファイルに対する読み取り、書き込み、実行の権限を持っています。

12
Ollie Glass

ちょうど私自身がこの問題を抱えていました。権限を変更し、メタデータベースをリセットし、ウェブサーバーを再起動した後、状況を修正するためにコードを変更する可能性さえありましたが、起こりませんでした。

しかし、ウェブサーバーを停止していても、gunicornプロセスがまだ実行されていることに気付きました。これらのプロセスを強制終了し、すべてのバックアップを開始すると成功しました

5
justcompile

これは私を助けました...

pkill -9 -f "airflow scheduler"

pkill -9 -f "airflow webserver"

pkill -9 -f "gunicorn"

次に、エアフロースケジューラとウェブサーバーを再起動します。

3
viru

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を実行します

それは私のために問題を解決しました。

2
r.guerbab

エラーの唯一の原因は、airflow_home-dags_folder構成パラメーターがスケジューラー、webUI、およびコマンド行インターフェースで同じ場合:

This DAG isn't available in the webserver DagBag object

pythonスクリプトのファイル権限またはエラーである可能性があります。

チェックしてください

  • 通常どおりDAGを実行するpythonスクリプトでエラーを確認する
  • Airflow.cfgのユーザーとdagを作成するユーザーは同じであるか、dagにairflowユーザーの実行権限が必要です
0
Priyank Mehta