19

在 Airflow 中,我应该如何处理错误“此 DAG 在网络服务器 DagBag 对象中不可用。它显示在此列表中是因为调度程序在元数据数据库中将其标记为活动”?

我已将新的 DAG 复制到 Airflow 服务器,并尝试过:

调度程序日志显示它正在处理并且没有发生错误,我可以与它交互并通过 CLI 查看它的状态,但它仍然没有出现在 Web UI 中。

编辑:网络服务器和调度程序运行在具有相同气流.cfg 的同一台机器上。它们不在 Docker 中运行。

它们由Supervisor运行,它们作为同一个用户(气流)运行。气流用户对所有 dag 文件具有读取、写入和执行权限。

4

5 回答 5

6

这帮助了我...

pkill -9 -f "airflow scheduler"

pkill -9 -f "airflow webserver"

pkill -9 -f "gunicorn"

然后重新启动气流调度程序和网络服务器。

于 2017-12-02T01:54:45.750 回答
5

我自己刚遇到这个问题。在更改权限、重置元数据库、重新启动网络服务器甚至进行一些潜在的代码更改以纠正这种情况之后,都没有发生。

然而,我注意到即使我们停止了网络服务器,我们的 gunicorn 进程仍在运行。杀死这些进程然后重新启动一切导致成功

于 2017-07-13T12:15:30.703 回答
3

我在从 Docker 映像安装的气流上遇到了同样的问题

我所做的是:

1-删除所有文件 .pyc

2-使用删除元数据数据库:

for t in ["xcom", "task_instance", "sla_miss", "log", "job", "dag_run", "dag" ]:
sql="delete from {} where dag_id='{}'".format(t, dag_input)
hook.run(sql, True)

3-重新启动网络服务器和调度程序

4-执行气流更新b

它为我解决了这个问题。

于 2019-06-05T18:05:15.380 回答
0

如果调度程序、webUI 和命令行界面的airflow_home - dags_folder 配置参数相同,则错误的唯一原因是:

This DAG isn't available in the webserver DagBag object

可以是 python 脚本中的文件权限或错误。

请检查

  • 像普通 python 脚本一样运行 dag 并检查错误
  • airflow.cfg 中的用户和创建 dag 的用户应该相同,或者 dag 应该对气流用户具有执行权限
于 2017-05-02T10:44:28.137 回答
-1

使用 Airflow 1.9,我不会遇到僵尸 gunicorn 进程的问题。

我做了一个简单的重启:systemctl restart airflow-webserver它强制网络服务器刷新 DAG 状态。

于 2018-09-12T10:16:33.480 回答