Airflow 气流网络服务器可以';不要打开DAG?

Airflow 气流网络服务器可以';不要打开DAG?,airflow,Airflow,无法在airflow Web服务器UI中打开DAG时出现问题 需要注意的一点是,所讨论的DAG最初在尝试运行时导致超时错误,因此我编辑了aiffort.cfg文件,使其具有行 dagbag_import_timeout = 300 现在在做了这个改变之后,运行 airflow list_dags 可以看到dag成功构建 然后转到Web服务器,在UI中刷新dag,将dag状态切换为“打开”,单击dag以尝试查看图形视图 或者收到关于超时的消息,如 损坏的DAG:[/home/aiffort/a

无法在airflow Web服务器UI中打开DAG时出现问题

需要注意的一点是,所讨论的DAG最初在尝试运行时导致超时错误,因此我编辑了aiffort.cfg文件,使其具有行

dagbag_import_timeout = 300
现在在做了这个改变之后,运行

airflow list_dags
可以看到dag成功构建

然后转到Web服务器,在UI中刷新dag,将dag状态切换为“打开”,单击dag以尝试查看图形视图

或者收到关于超时的消息,如

损坏的DAG:[/home/aiffort/aiffort/dags/mydag.py]超时,PID:44818

(尽管在
气流列表\u dags
命令期间dag似乎成功构建)或Web服务器页面显示一些浏览器错误,如“页面未发送数据”,并且在重新加载后,我看到dag已关闭(在这两种情况下,
气流Web服务器.log
中均未显示问题)。我甚至注意到其他DAG通常运行得很快,但现在运行得慢多了

由于dag似乎能够在手动运行
气流列表_dag
时生成,但不能在Web服务器中生成,因此我认为可能需要更改其中一个Web服务器超时配置,例如

#Web服务器在杀死没有响应的gunicorn主机之前等待的秒数
web\u服务器\u主机\u超时=。。。
#gunicorn Web服务器在工作进程超时之前等待的秒数
web\u服务器\u工作者\u超时=。。。
...
日志获取超时秒=。。。
...
但对气流的基本机制还没有足够的经验来确定它们之间的联系

更多调试信息(如果有帮助):

[root@airflowetl气流]#ps-辅助| grep Web服务器
气流16740 0.80.2 782620 134804?S 15:17 0:06[准备就绪]gunicorn:worker[气流网络服务器]
气流29758 2.3 0.2 756164 108644?S 15:26 0:03[准备就绪]gunicorn:worker[气流网络服务器]
气流3382014.80.172478036?S 15:29 0:01 gunicorn:工人[气流网络服务器]
气流33854 26.7 0.1 724784 78032?S 15:29 0:01 gunicorn:工人[气流网络服务器]
气流33855 26.5 0.1 724816 78064?S 15:29 0:01 gunicorn:工人[气流网络服务器]
root 34072 0.0 0.0 112712 968 pts/0 S+15:29 0:00 grep--color=auto-webserver
气流91174 1.6 0.1 735708 82468?S 14:14 1:14/usr/bin/python3/home/afflow/.local/bin/afflow webserver-D
气流91211 0.0 0.1 355040 53472?S 14:14 0:01 gunicorn:master[气流网络服务器]
任何有更多气流经验的人都知道为什么会发生这种情况以及如何解决?(可能是我应该扩展的airflow.cfg超时配置)


更新:

进一步调试后,问题似乎与dag中配置/创建的特定任务有关。DAG定义本身并不是非常直截了当,也不是非常特定于应用程序,所以在发布之前,需要尝试将其解析为更感性和可读的内容。虽然这仍然不能解释为什么dag在dag期间生成,但不能在Web服务器中生成

按照我所能测量的,计时
气流列表_dags
命令(仅使用
time
实用程序运行),有无一个更改,时差为

before change: real 1m31.201s
after change: real  2m39.744s
before change: real 1m31.201s
after change: real  2m39.744s

更新:


经过更多的调试之后,我怀疑问题最终还是出在Web服务器上。运行气流列表时始终能够生成dag,但当其他dag运行时,无法在Web服务器中单击dag,并引发超时错误。当没有其他dag运行时,可以在Web服务器中查看dag(树和图形),但返回主屏幕时,会看到与以前相同的“断开的dag;…超时,PID:1234”错误

请尽可能共享您的dag定义。
想不到,我想你还没有启动气流调度器

$ airflow scheduler
以及
webserver
(如果您尚未对其进行后台监控,则在单独的终端中)。

气流
调度程序
以及
Web服务器
必须同时运行,以便运行DAG并查看
Web服务器
上的进度

对气流列表(仅使用时间实用程序运行)命令进行计时(有无一项更改,时差为

before change: real 1m31.201s
after change: real  2m39.744s
before change: real 1m31.201s
after change: real  2m39.744s
查看
aiffort.cfg
文件,查找与Web服务器和超时(尤其是超时值<2m39s)相关的任何内容,其中秒数小于新dag构建时间,发现

# Number of seconds the webserver waits before killing gunicorn master that doesn't respond
web_server_master_timeout = 120

# Number of seconds the gunicorn webserver waits before timing out on a worker
web_server_worker_timeout = 120
...
# The amount of time (in secs) webserver will wait for initial handshake
# while fetching logs from other worker machine
log_fetch_timeout_sec = 5
运行webserver(不是deamon进程)并观察输出,当它试图用新修改的dag填充dab包时,我在gnuicorn workers上看到错误,如

[2020-01-16 11:12:22-1000][137034][CRITICAL]工人超时(pid:137039)
[2020-01-16 11:12:22-1000][137034][CRITICAL]工人超时(pid:137040)
[2020-01-16 11:12:22-1000][137034][CRITICAL]工人超时(pid:137041)
[2020-01-16 11:12:22-1000][137034][CRITICAL]工人超时(pid:137042)
[2020-01-16 11:12:22-1000][137039][INFO]工人退出(pid:137039)
[2020-01-16 11:12:22-1000][137041][INFO]工人退出(pid:137041)
[2020-01-16 11:12:22-1000][137042][INFO]工人退出(pid:137042)
[2020-01-16 11:12:22-1000][137040][INFO]工人退出(pid:137040)
web\u服务器\u工作者\u超时时间从120更改为300(5分钟)
并测试在web服务器中访问修改后的问题dag(树和图形视图)的速度似乎快得多(并且在看到超时错误在最初启动后继续在web服务器中弹出后),问题似乎得到了解决


请注意,仍然可以看到Web服务器中弹出超时错误(有时在刷新主页时)(尽管无法在Web服务器日志中找到)。不完全确定什么