DAG 在 Web-UI 中不可见

Posted

技术标签:

【中文标题】DAG 在 Web-UI 中不可见【英文标题】:DAG not visible in Web-UI 【发布时间】:2016-12-23 21:31:33 【问题描述】:

我是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)

在运行脚本时,它不会显示任何错误,但是当我在 Web-UI 中检查 dags 时,它不会显示在 菜单->DAGs下>

但我可以在菜单->浏览->工作

下看到预定的job

我也看不到 $AIRFLOW_HOME/dags 中的任何内容。应该只有这样吗?谁能解释一下原因?

【问题讨论】:

【参考方案1】:

您在作业页面上看到的ScheduleJob 是调度程序的条目。那不是被安排的dag。

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

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

【讨论】:

我是否需要运行 $AIRFLOW_HOME/dags 文件夹中的问题中提到的脚本 是的,没错。您的所有 dag 定义(python 文件初始化 dag - 上面示例中的行 dag = DAG(...))应该在您的 airflow.cfg 文件中配置的 DAGs 目录中的全局范围内。【参考方案2】:

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

【讨论】:

【参考方案3】:

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

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

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

【讨论】:

你知道如何解决浏览器UI问题吗? @EricBellet for me airflow list_dags 帮助快速修复,我不知道这个问题的根本原因 是的。使用气流网络服务器 -p 8080 -D 重新启动 UI 这是另一个快速修复 有时即使这样也需要一段时间才能工作。我刚才有一个经验,我按照这个答案中的所有说明进行操作,但是新的 DAG 仍然需要大约 3 分钟才能显示在 UI 中。在某个时候,也许我会深入研究配置设置,看看这是否是可以调整的刷新频率。 对于 Airflow 2,请尝试 airflow dags list【参考方案4】:

我们需要澄清几件事:

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

Airflow Scheduler 默认每 5 分钟检查一次 dags_folder 是否有新的 DAG 文件(由 airflow.cfg 中的 dag_dir_list_interval 管理)。因此,如果您只是添加了一个新文件,您有两种选择:

    重启调度器 等到当前调度程序进程获取新的 DAG。

【讨论】:

啊,对我来说就是这样——我没有运行调度程序来获取新的 dag。谢谢!【参考方案5】:

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

airflow scheduler

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

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

【讨论】:

【参考方案6】:

检查Paused dags。你的 DAG 可能已经结束了。如果您确定已正确添加 .py 文件,则使用 dag_id 手动键入 dag 的 url。例如http://AIRFLOW_URL/graph?dag_id=dag_id。然后你可以看看 Airflow 是否接受了你的 dag。

【讨论】:

【参考方案7】:

我有同样的问题。我将下载的 Airflow 放了两次,一次没有 sudo,一次使用 sudo。我使用的是 sudo 版本,其中的目录位于我的用户路径下。我只是运行了气流命令: export AIRFLOW_HOME=~/气流

【讨论】:

【参考方案8】:

我遇到了同样的问题。就我而言,新 DAG 的权限不正确。

运行 ls -l 以查看新 DAG 的权限。对我来说,所有者被列为我自己,而不是默认气流用户(在我的情况下应该是 root)。

一旦我更改了权限 (chown root:root <file_name>),该文件立即显示在 Web UI 中。

【讨论】:

【参考方案9】:

列出 dag 或重新启动网络服务器对我没有帮助。但重置 db 确实如此。

airflow db reset

【讨论】:

以上是关于DAG 在 Web-UI 中不可见的主要内容,如果未能解决你的问题,请参考以下文章

UIImageView 在 UITableViewCell 中不可见

下拉列表在 Firefox 中不可见

导入的记录在 mySQL 中不可见

JPanel 在 JFrame 中不可见

在单击按钮时创建的项目在 JFrame 中不可见

CFBundleUrlTypes 在 Info.plist 中可见,但在它的 XCode 视图中不可见