web-dev-qa-db-fra.com

Le flux d'air ne charge pas les dags dans / usr / local / airflow / dags

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?

15
Jeremy Lewi

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.

17
Rupesh Bansal

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))
12
Jeremy Lewi
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

5
Neil

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.

  1. Votre fichier DAG a un problème de syntaxe. Pour vérifier cela, exécutez simplement python custom_example_bash_operator.py Et voyez s'il y a un problème.
  2. Vérifiez si le dossier est le chemin de chargement du fichier par défaut. Pour un nouvel oiseau, je suggère de simplement créer un nouveau fichier .py et de copier l'exemple d'ici https://airflow.incubator.Apache.org/tutorial.html puis de voir si le test dag apparaît.
  3. Assurez-vous qu'il y a dag = DAG('dag_name', default_args=default_args) dans le fichier dag.
5
AC at CA

Ê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.

0
SMDC

Vérifiez Une fois le chemin du dossier dags dans airflow.cfg (dags_folder), il peut être incorrect.

0
ABRAR TYAGI

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.

0
Bolke de Bruin

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
0
Hutch