气流 - 如何 '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 的核心。
我的 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 的核心。