Google cloud platform 气流如何从谷歌云平台上的dags主文件夹加载/更新DagBag?

Google cloud platform 气流如何从谷歌云平台上的dags主文件夹加载/更新DagBag?,google-cloud-platform,airflow,airflow-scheduler,Google Cloud Platform,Airflow,Airflow Scheduler,请不要否决我的答案。如果需要,我会更新和纠正我的话。我已经做了家庭作业研究。我是一个新手,所以试着去理解这一点 我想了解Google云平台上的airflow是如何将dags主文件夹更改为UI的。另外,请帮助我使用我的dags设置脚本。我在书中读了很多答案。图书链接是 我试着从第69页找到我的答案,上面写着 3.11调度和触发气流调度器监视所有任务和所有DAG,并触发依赖项已更改的任务实例 我们见过面。在幕后,它监视并与 它可能包含的所有DAG对象的文件夹,并定期(每 分钟左右)检查活动任务,看它

请不要否决我的答案。如果需要,我会更新和纠正我的话。我已经做了家庭作业研究。我是一个新手,所以试着去理解这一点

我想了解Google云平台上的airflow是如何将dags主文件夹更改为UI的。另外,请帮助我使用我的dags设置脚本。我在书中读了很多答案。图书链接是

我试着从第69页找到我的答案,上面写着

3.11调度和触发气流调度器监视所有任务和所有DAG,并触发依赖项已更改的任务实例 我们见过面。在幕后,它监视并与 它可能包含的所有DAG对象的文件夹,并定期(每 分钟左右)检查活动任务,看它们是否可以 已触发。

我从这本书中了解到,调度器定期从dags主文件夹进行更改。(正确吗?)

我还阅读了关于堆栈溢出的多个答案,我发现这个答案很有用

但仍然回答不包含从dag主文件夹中的script.py创建/更新dagbag的过程。如何感知变化

请帮助我使用dags设置脚本。 我们已经创建了一个通用python脚本,它通过读取/迭代配置文件来动态创建DAG

下面是目录结构

/dags/workflow/
/dags/workflow/config/dag_a.json
/dags/workflow/config/dag_b.json
/dags/workflow/task_a_with_single_operator.py
/dags/workflow/task_b_with_single_operator.py
/dags/dag_creater.py
执行流dag_creater.py如下所示:-

 1. Iterate in dags/workflow/config folder get the Config JSON file and
    read variable dag_id.
 2. create Parent_dag = DAG(dag_id=dag_id,
    start_date=start_date, schedule_interval=schedule_interval,
                             default_args=default_args, catchup=False) 
 3. Read tasks with dependencies of that dag_id from config json file
    (example :- [[a,[]],[b,[a]],[c,[b]]]) and code it as task_a >>
    task_b >> task_c
这样就可以创建dag。一切正常。DAG在UI上也可见,运行良好

但问题是,我的dag创建脚本每次都在运行。即使在每个任务日志中,我也可以看到所有DAG的日志。我希望这个脚本运行一次。只是为了在元数据中填充条目。我无法理解为什么它每次都在运行。 请让我了解这个过程

我知道一旦我们第一次设置元数据,initdb就会运行。所以这并不是一直在做这个更新

  • 是计划程序心跳更新所有内容吗?
  • 我的设置正确吗?
请注意:我无法键入真实代码,因为这是我的 组织。不过,如果有人问我,我会提供更多信息

实际上,Airflow在Airflow运行时环境中持续运行,是监视DAG文件夹中的更改并触发驻留在此文件夹中的相关DAG任务的主要贡献者。Airflow Scheduler服务的主要设置可在
Airflow.cfg
文件中找到,主要是有效影响一般DAG任务维护的心跳

但是,特定任务的执行方式是根据气流配置中的模型定义的

要存储可用于气流运行时环境的DAG,GCP Composer使用云存储,实现特定文件夹,将到达
/DAGs
文件夹的任何对象与
*.py
扩展名同步。如果扩展名包含DAG,请验证该扩展名


如果您希望在Airflow运行时内运行DAG扩展脚本,那么在这个特定的用例中,我建议您查看一下,在单独的DAG中使用它来调用和执行定制的通用Python代码,保证每次只调用和执行一次。您可以使用实现详细信息查看此堆栈。

您是否尝试在
DAG
之外的某个位置查找DAG创建脚本,以消除此脚本将由Composer调度的风险?不,我们没有尝试。但是说所有python文件都是定期编译的对吗?谢谢@Nick\u kh。是的,这很有道理。只是想给你的答案添加一些东西给那些可能读到这篇文章的人。我发现这个链接非常有用。实际上,属性dag_dir_list_interval正在执行所有操作。我也不确定,但我觉得这个属性(store_dag_code)对某些人也很有用,因为它从数据库而不是文件夹加载dag。