DAG 在 Web-UI 中不可见

Rus*_*sty 23 python directed-acyclic-graphs python-3.x airflow

我是新手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': ['abc@xyz.com'],
    '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)
Run Code Online (Sandbox Code Playgroud)

在运行脚本时,它不会显示任何错误,但是当我检查它时dagsWeb-UI它不会显示在Menu -> DAGs 下

在此处输入图片说明

但是我可以jobMenu -> Browse -> Jobs下看到预定的

在此处输入图片说明

我也看不到 $AIRFLOW_HOME/dags 中的任何内容。难道只能这样吗?有人可以解释为什么吗?

sam*_*amm 19

运行airflow list_dags 检查dag文件是否定位正确。

出于某种原因,在执行此操作之前,我没有在浏览器 UI 中看到我的 dag。一定是浏览器缓存或其他问题。

如果这不起作用,您应该使用以下命令重新启动网络服务器 airflow webserver -p 8080 -D

  • 对于 Airflow 2,请尝试“airflow dags list” (16认同)
  • 有时甚至这也需要一段时间才能发挥作用。我刚才有过一次经历,我按照这个答案中的所有说明进行操作,但新的 DAG 仍然需要大约 3 分钟才能显示在 UI 中。在某些时候,也许我会深入研究配置设置,看看这是否是可以调整的刷新频率。 (3认同)
  • 是的。使用 airflow webserver -p 8080 -D 重新启动 UI 这是另一个快速修复 (2认同)

Den*_*Ogr 14

我有同样的问题。要解决我需要运行调度程序

airflow scheduler
Run Code Online (Sandbox Code Playgroud)

没有这个命令,我看不到我的新 DAG 顺便说一句:UI 向我显示与该问题相关的警告:

调度程序似乎没有运行。最后一次心跳是在 9 秒前收到的。DAG 列表可能不会更新,并且不会安排新任务。


Pav*_*kyi 11

我们需要澄清几点:

  1. 您绝不需要自己运行 DAG 文件(除非您正在测试它的语法错误)。这是调度程序/执行程序的工作。
  2. 为了让调度程序(以及 Webserver)可以看到 DAG 文件,您需要将其添加到dags_folder(在 中指定airflow.cfg。默认情况下,它是$AIRFLOW_HOME/dags子文件夹)。

dags_folder默认情况下,Airflow Scheduler每 5 分钟检查一次新的 DAG 文件(由dag_dir_list_intervalin 控制airflow.cfg)。因此,如果您刚刚添加了一个新文件,您有两个选择:

  1. 重启调度器
  2. 等到当前调度程序进程选择新的 DAG。


Vin*_*oel 10

ScheduleJob你的作业页面上看到的是调度的条目。那不是正在安排的 dag。

你的 $AIRFLOW_HOME/dags 是空的,这很奇怪。所有 dag 必须位于 $AIRFLOW_HOME/dags 目录中(特别是在airflow.cfg文件中配置的 dags 目录中)。看起来您没有将实际的 dag 存储在正确的目录(dags 目录)中。

或者,有时您还需要重新启动网络服务器才能显示 dag(尽管这似乎不是这里的问题)。


小智 5

检查中的dags_folder变量 airflow.cfg。如果您有虚拟环境,export AIRFLOW_HOME=$(pwd)则从主项目目录运行该命令。请注意,运行export AIRFLOW_HOME=$(pwd)期望您的 dagdags位于项目目录的子目录中。