web-dev-qa-db-ja.com

DAGはWeb-UIに表示されません

Airflowは初めてです。私はチュートリアルに従っていて、次のコードを書いています。

from airflow import DAG
from airflow.operators.python_operator import PythonOperator
from datetime import datetime, timedelta
from models.correctness_prediction import CorrectnessPrediction

default_args = {
    'owner': 'abc',
    'depends_on_past': False,
    'start_date': datetime.now(),
    'email': ['[email protected]'],
    'email_on_failure': False,
    'email_on_retry': False,
    'retries': 1,
    'retry_delay': timedelta(minutes=5)
}

def correctness_prediction(arg):
    CorrectnessPrediction.train()

dag = DAG('daily_processing', default_args=default_args)

task_1 = PythonOperator(
    task_id='print_the_context',
    provide_context=True,
    python_callable=correctness_prediction,
    dag=dag)

スクリプトの実行時にエラーは表示されませんが、Web-UIdagsを確認すると、Menu->の下に表示されませんDAG

enter image description here

しかし、Menu->Browse->の下にスケジュールされたjobが表示されます仕事

enter image description here

$ AIRFLOW_HOME/dagsにも何も表示されません。こんな感じだけなの?誰かが理由を説明できますか?

8
Rusty

ジョブページに表示されるScheduleJobは、スケジューラのエントリです。それは予定されているダグではありません。

$ AIRFLOW_HOME/dagsが空であるのは奇妙です。すべてのdagは、$ AIRFLOW_HOME/dagsディレクトリ(具体的には、airflow.cfgファイルで構成されたdagsディレクトリ)内に存在する必要があります。実際のdagを正しいディレクトリ(dagsディレクトリ)に保存していないようです。

または、dagを表示するためにWebサーバーを再起動する必要がある場合もあります(ただし、ここでは問題ではないようです)。

3
Vineet Goel

airflow list_dagsを実行して、dagファイルが正しく配置されているかどうかを確認します。

何らかの理由で、これを実行する前にブラウザUIにダグが表示されませんでした。ブラウザのキャッシュなどに問題があるはずです。

それでも問題が解決しない場合は、airflow webserver -p 8080 -Dを使用してウェブサーバーを再起動する必要があります。

6
samutamm

_dags_folder_の_airflow.cfg_変数を確認してください。仮想環境がある場合は、メインプロジェクトディレクトリからexport AIRFLOW_HOME=$(pwd)コマンドを実行します。 export AIRFLOW_HOME=$(pwd)を実行すると、DAGがプロジェクトディレクトリのdagsサブディレクトリにあることが期待されます。

2
deerishi

いくつかのことを明確にする必要があります。

  1. 決して、DAGファイルを自分で実行する必要はありません(構文エラーがないか テスト でない限り)。これがScheduler/Executorの仕事です。
  2. DAGファイルをスケジューラ(および結果としてWebサーバー)で表示するには、dags_folderに追加する必要があります(airflow.cfgで指定されています。デフォルトでは$AIRFLOW_HOME/dagsサブフォルダーです)。

Airflow Schedulerは、デフォルトで5分ごとにdags_folderで新しいDAGファイルをチェックします(dag_dir_list_intervalairflow.cfgによって管理されます)。したがって、新しいファイルを追加したばかりの場合は、次の2つのオプションがあります。

  1. スケジューラを再起動します
  2. 現在のスケジューラプロセスが新しいDAGを取得するまで待機します。
0

同じ問題があります。解決するには、スケジューラーを実行する必要があります

airflow scheduler

このコマンドがないと、新しいDAGが表示されません。UIにその問題に関連する警告が表示されます。

スケジューラーが実行されていないようです。最後のハートビートは9秒前に受信されました。 DAGリストは更新されない可能性があり、新しいタスクはスケジュールされません。

0
DenisOgr