气流 - 如何仅“填充 DagBag”一次

too*_*op4 6 orchestration airflow airflow-scheduler apache-airflow-xcom

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

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

vur*_*mux 4

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

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

气流的工作原理与您所描述的完全一样。这就是为什么您应该将 DAG 文件夹中的 Python 文件主要视为配置文件(具有一些编程功能)。您无法使用任何神奇的配置键或类似的东西来更改它。这种行为是 Airflow 的核心。