Airflow 还有一个“;这个DAG不是';t在Web服务器DagBag对象中可用”;

Airflow 还有一个“;这个DAG不是';t在Web服务器DagBag对象中可用”;,airflow,Airflow,这似乎是一个相当普遍的问题。我有一个DAG,我不仅可以用气流触发器\u DAG手动触发它,而且它甚至可以按照它的时间表执行,但它拒绝显示在UI中 我已经多次重新启动了Web服务器和调度程序,按了十亿次“刷新”,并通过运行了它。有人有其他想法吗?我能提供其他相关信息吗 我使用的是Airflow 1.9.0。在过去的几个小时里,我一直在调试这个问题。这似乎是由于DAG中的一个无声错误。把我的笔记留给下一个可怜的人 因此,在我的例子中,此错误是由于DAG中的以下代码块造成的: 这失败了: def re

这似乎是一个相当普遍的问题。我有一个DAG,我不仅可以用
气流触发器\u DAG
手动触发它,而且它甚至可以按照它的时间表执行,但它拒绝显示在UI中

我已经多次重新启动了Web服务器和调度程序,按了十亿次“刷新”,并通过
运行了它。有人有其他想法吗?我能提供其他相关信息吗


我使用的是Airflow 1.9.0。

在过去的几个小时里,我一直在调试这个问题。这似乎是由于DAG中的一个无声错误。把我的笔记留给下一个可怜的人

因此,在我的例子中,此错误是由于DAG中的以下代码块造成的:

这失败了:

def read_lakes_id_file_simple():
LAKES_ID_FILE=“/home/afflow/gcs/data/LAKES_to_monitor.json”
打开(LAKES_ID_文件)作为json_文件:
data=json.load(json_文件)
返回数据
这意味着:

def read_lakes_id_file_simple():
尝试:
LAKES_ID_FILE=“/home/afflow/gcs/data/LAKES_to_monitor.json”
打开(LAKES_ID_文件)作为json_文件:
data=json.load(json_文件)
返回数据
例外情况除外,如e:
返回“许多湖泊”
因此,我猜第一个在调度程序读取/检查时会以某种方式失败,可能是因为它找不到文件,或者诸如此类,而第二个成功是因为它由工作程序以正确的路径运行。(也可能是其他原因。)显而易见的是,加载/运行DAG时有两种不同的运行和行为,一种无声地失败,而另一种成功

这会导致奇怪的行为,例如DAG第一次运行良好,然后从Airflow Web界面消失


因此,我给你的建议是将
try/except
添加到任何符合要求的内容中,作为调试代码的一种方式

有趣的是,我在虚拟环境中工作时遇到了这个问题,当我认为所有软件包都可以虚拟工作时,并没有在全局范围内安装所有软件包,这表明存在安装问题