首页 > 解决方案 > 气流 - 如何仅“填充 DagBag”一次

问题描述

我的 dag 需要大约 50 秒来解析,我只使用外部触发器来启动 dag 运行,没有时间表。我注意到气流想要填充 dagbag 很多 --> 在每个 trigger_dag 命令和在后台它会不断检查 dags 文件夹并在部署新的 .py 后立即创建 .pyc 文件。

无论如何我可以部署我的集群并填充一次dags!然后在接下来的 2 周内,在任何 trigger_dag 上立即启动 dagruns(现在在开始之前需要 50 秒来填充 dagbag)。我不需要在 2 周内更新 dag 定义。

标签: airflow-schedulerorchestrationairflow

解决方案


50 秒对于 DAG 实例化来说是一个难以置信的巨大时间。看起来您在 DAG 文件中使用了一大段代码(或只是长时间工作)。这是非常糟糕的做法

注意:这意味着 DAG 文件中的所有顶级代码(即任何未定义 DAG 的代码)都将在每个调度程序检测信号中运行。除非绝对必要,否则尽量避免在 DAG 文件中添加顶级代码。

气流完全按照您的描述工作。这就是为什么您应该将 DAG 文件夹中的 Python 文件主要视为配置文件(具有一些编程功能)。你不能用任何魔法配置键或类似的东西来改变它。这种行为是 Airflow 的核心。


推荐阅读