Airflow semble ignorer les dags que j'ai ajoutés à/usr/local/airflow/dags.
Quand je cours
airflow list_dags
La sortie montre
[2017-08-06 17:03:47,220] {models.py:168} INFO - Filling up the DagBag from /usr/local/airflow/dags
-------------------------------------------------------------------
DAGS
-------------------------------------------------------------------
example_bash_operator
example_branch_dop_operator_v3
example_branch_operator
example_http_operator
example_passing_params_via_test_command
example_python_operator
example_short_circuit_operator
example_skip_dag
example_subdag_operator
example_subdag_operator.section-1
example_subdag_operator.section-2
example_trigger_controller_dag
example_trigger_target_dag
example_xcom
latest_only
latest_only_with_trigger
test_utils
tutorial
Mais cela n'inclut pas les dags dans/usr/local/airflow/dags
ls -la /usr/local/airflow/dags/
total 20
drwxr-xr-x 3 airflow airflow 4096 Aug 6 17:08 .
drwxr-xr-x 4 airflow airflow 4096 Aug 6 16:57 ..
-rw-r--r-- 1 airflow airflow 1645 Aug 6 17:03 custom_example_bash_operator.py
drwxr-xr-x 2 airflow airflow 4096 Aug 6 17:08 __pycache__
Y a-t-il une autre condition qui doit être satisfaite pour que le flux d'air identifie un DAG et le charge?
Essayez airflow initdb avant de lister les dags. C'est parce que airflowlist_dags répertorie tous les dags présents dans la base de données (et non dans le dossier que vous avez mentionné). Airflow initdb créera une entrée pour ces dags dans la base de données.
Assurez-vous que la variable d'environnement AIRFLOW_HOME est définie sur/usr/local/airflow. Si cette variable n'est pas définie, airflow recherche des dags dans le dossier home airflow, qui peuvent ne pas exister dans votre cas.
Mon dag est en cours de chargement, mais le nom du DAG était incorrect. Je m'attendais à ce que le dag soit nommé par le fichier, mais le nom est déterminé par le premier argument du constructeur DAG
dag = DAG(
'tutorial', default_args=default_args, schedule_interval=timedelta(1))
dag = DAG(
dag_id='example_bash_operator',
default_args=args,
schedule_interval='0 0 * * *',
dagrun_timeout=timedelta(minutes=60))
Lorsqu'un DAG est instancié, il apparaît sous le nom que vous spécifiez dans l'attribut dag_id. dag_id sert d'identifiant unique pour votre DAG
Les fichiers d'exemple ne se trouvent pas dans/usr/local/airflow/dags. Vous pouvez simplement les couper en éditant airflow.cfg (généralement dans ~/airflow). définissez load_examples = False
dans la section 'core'.
Il y a quelques erreurs qui peuvent empêcher votre DAG d'être répertorié dans list_dags
.
python custom_example_bash_operator.py
Et voyez s'il y a un problème.https://airflow.incubator.Apache.org/tutorial.html
puis de voir si le test dag apparaît.dag = DAG('dag_name', default_args=default_args)
dans le fichier dag.Êtes-vous
custom_example_bash_operator.py
a un nom DAG différent des autres? Si oui, essayez de redémarrer le planificateur ou même de réinitialiser la base de données. J'ai généralement confondu le nom de fichier avec le nom de dag, donc il vaut mieux les nommer de la même manière.
Vérifiez Une fois le chemin du dossier dags dans airflow.cfg (dags_folder), il peut être incorrect.
Pouvez-vous partager ce qui se trouve dans custom_example_bash_operator.py
? Airflow recherche une certaine magie dans un fichier pour déterminer s'il s'agit d'un DAG ou non. Il recherche airflow
et DAG
.
De plus, si vous utilisez un dag_id en double pour un DAG, il sera écrasé. Comme vous semblez dériver de l'exemple de l'opérateur bash, avez-vous conservé le nom du DAG example_bash_operator
peut être? Essayez de renommer cela.
Je constate que je dois redémarrer le planificateur pour que l'interface utilisateur récupère les nouveaux dags, lorsque j'apporte des modifications à un dag dans mon dossier dags. Je trouve que lorsque je mets à jour les dags, ils apparaissent dans la liste lorsque j'exécute airflow list_dags tout simplement pas dans l'interface utilisateur jusqu'à ce que je redémarre le planificateur.
Essayez d'abord de lancer:
airflow scheduler