web-dev-qa-db-fra.com

Exemple de DAG bloqué dans l'état "en cours d'exécution" indéfiniment

Lors de ma première incursion dans le flux d'air, j'essaie d'exécuter l'un des exemples de DAGS fournis avec l'installation. Ceci est la v.1.8.0. Voici mes étapes:

$ airflow trigger_dag example_bash_operator
[2017-04-19 15:32:38,391] {__init__.py:57} INFO - Using executor SequentialExecutor
[2017-04-19 15:32:38,676] {models.py:167} INFO - Filling up the DagBag from /Users/gbenison/software/kludge/airflow/dags
[2017-04-19 15:32:38,947] {cli.py:185} INFO - Created <DagRun example_bash_operator @ 2017-04-19 15:32:38: manual__2017-04-19T15:32:38, externally triggered: True>
$ airflow dag_state example_bash_operator '2017-04-19 15:32:38'
[2017-04-19 15:33:12,918] {__init__.py:57} INFO - Using executor SequentialExecutor
[2017-04-19 15:33:13,229] {models.py:167} INFO - Filling up the DagBag from /Users/gbenison/software/kludge/airflow/dags
running

Le dag state reste "en fonctionnement" pendant longtemps (au moins 20 minutes à ce jour), bien que l'inspection rapide de cette tâche ne prend que quelques secondes. Comment puis-je résoudre ce problème? Comment puis-je voir quelle étape il est bloqué?

17
gcbenison

Pour exécuter des DAG, vous devez vous assurer que deux processus sont en cours d'exécution:

  • airflow webserver
  • airflow scheduler

Si vous n'avez que airflow webserver en cours d'exécution, l'interface utilisateur affichera les DAG comme étant running, mais si vous cliquez sur le DAG, aucune de ses tâches n'est réellement running ou scheduled, mais plutôt dans un état Null. Cela signifie qu’ils attendent d’être récupérés par airflow scheduler. Si airflow scheduler n'est pas en cours d'exécution, vous serez bloqué dans cet état pour toujours, car les tâches ne sont jamais prises en charge pour l'exécution.

De plus, assurez-vous que le bouton bascule de la vue DAG est réglé sur "ON" pour le DAG particulier. Sinon, il ne sera pas récupéré par le planificateur si vous le déclenchez manuellement.

15
Ladislav Indra

Moi aussi, j'ai récemment commencé à utiliser Airflow et mes dags ont continué à tourner. Votre dag peut être mis en "pause" sans que vous vous en rendiez compte, et le planificateur ne planifiera donc pas de nouvelles instances de tâches. Lorsque vous déclenchez le dag, il semble simplement qu'il fonctionne sans arrêt. 

Il y a quelques solutions:

1) Dans l'interface utilisateur Airflow, basculez le bouton situé à gauche du dag de «Off» à «On». Désactivé signifie que le dag est en pause, donc Activé permettra au planificateur de le récupérer et de le compléter. (cela a résolu mon problème initial)

2) Dans votre fichier airflow.cfg, dags_are_paused_at_creation = True, est la valeur par défaut. Ainsi, tous les nouveaux dags que vous créez sont mis en pause dès le début. Changez ceci en False et les dags futurs que vous créez seront bons à aller tout de suite (je devais redémarrer le serveur web et le planificateur pour que les modifications apportées à airflow.cfg soient reconnues) 

3) utilisez la ligne de commande $ airflow unpause [dag_id] Documentation: https://airflow.Apache.org/cli.html#unpause

6
jbreezybaby

Le dessous a fonctionné pour moi. 

  1. Assurez-vous que AIRFLOW_HOME est défini
  2. dans AIRFLOW_HOME ont des dossiers dags, des plugins. Les dossiers doivent avoir les autorisations r, w, x pour permettre à l’utilisateur d’aérer le son 
  3. Assurez-vous d'avoir au moins un dag dans le dossier dags /. 
  4. pip installer céleri [redis] == 4.1.1

J'ai vérifié la solution ci-dessus sur le flux d'air 1.9.0 Version du flux d'air

J'ai essayé le même truc avec la version 1.10 d’airflow et cela a fonctionné. 

0
ravi