气流 - 如何 'Filling up the DagBag' 一次

airflow - how to 'Filling up the DagBag' once only

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

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

50 秒对于 DAG 实例化来说是非常长的时间。看起来您在 DAG 文件中使用了一大段代码(或者只是长时间工作)。是 very bad practice:

Note: This means all top level code (ie. anything that isn't defining the DAG) in a DAG file will get run each scheduler heartbeat. Try to avoid top level code to your DAG file unless absolutely necessary.

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