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-UI
でdags
を確認すると、Menu->の下に表示されませんDAG
しかし、Menu->Browse->の下にスケジュールされたjob
が表示されます仕事
$ AIRFLOW_HOME/dagsにも何も表示されません。こんな感じだけなの?誰かが理由を説明できますか?
ジョブページに表示されるScheduleJob
は、スケジューラのエントリです。それは予定されているダグではありません。
$ AIRFLOW_HOME/dagsが空であるのは奇妙です。すべてのdagは、$ AIRFLOW_HOME/dagsディレクトリ(具体的には、airflow.cfg
ファイルで構成されたdagsディレクトリ)内に存在する必要があります。実際のdagを正しいディレクトリ(dagsディレクトリ)に保存していないようです。
または、dagを表示するためにWebサーバーを再起動する必要がある場合もあります(ただし、ここでは問題ではないようです)。
airflow list_dags
を実行して、dagファイルが正しく配置されているかどうかを確認します。
何らかの理由で、これを実行する前にブラウザUIにダグが表示されませんでした。ブラウザのキャッシュなどに問題があるはずです。
それでも問題が解決しない場合は、airflow webserver -p 8080 -D
を使用してウェブサーバーを再起動する必要があります。
_dags_folder
_の_airflow.cfg
_変数を確認してください。仮想環境がある場合は、メインプロジェクトディレクトリからexport AIRFLOW_HOME=$(pwd)
コマンドを実行します。 export AIRFLOW_HOME=$(pwd)
を実行すると、DAGがプロジェクトディレクトリのdags
サブディレクトリにあることが期待されます。
いくつかのことを明確にする必要があります。
dags_folder
に追加する必要があります(airflow.cfg
で指定されています。デフォルトでは$AIRFLOW_HOME/dags
サブフォルダーです)。Airflow Schedulerは、デフォルトで5分ごとにdags_folder
で新しいDAGファイルをチェックします(dag_dir_list_interval
のairflow.cfg
によって管理されます)。したがって、新しいファイルを追加したばかりの場合は、次の2つのオプションがあります。
同じ問題があります。解決するには、スケジューラーを実行する必要があります
airflow scheduler
このコマンドがないと、新しいDAGが表示されません。UIにその問題に関連する警告が表示されます。
スケジューラーが実行されていないようです。最後のハートビートは9秒前に受信されました。 DAGリストは更新されない可能性があり、新しいタスクはスケジュールされません。