我正在使用Cloud Composer安排多个DAG。这些DAG使用this method动态构建,并使用自定义插件。
我想知道如何添加/修改涉及所有DAG的插件(例如,它为每个DAG添加新任务)时如何进行?
这样做时是否需要暂停所有正在运行的DAG?
到目前为止,我在添加/修改插件时所做的是:
plugins
存储桶中(使用gcloud composer命令)我这样做是为了迫使DAG暂停,一旦更新完成,便恢复DAG,但使用新的插件,并因此使用新的任务(或者如果不在此dagrun中,则为下一个)。没用吗?
谢谢您的帮助。
答案 0 :(得分:1)
如architecture diagram中所述,在您查看DAG和插件代码的 Airflow网络服务器中,该代码在Google管理的租户项目中运行,而 Airflow工作人员 >实际运行DAG和插件代码的代码直接在您的项目中。
将DAG /插件放在Composer bucket中时,Airflow Web服务器(属于租户项目)会验证代码并更新Airflow数据库中的任何新计划更改。
同时,气流调度程序(在您的项目中)向气流数据库询问要运行的下一个DAG,并通知气流工作人员执行预定的工作。然后,Airflow工作人员(在您的项目中)从Composer存储段中获取DAG /插件代码并进行编译,以运行该特定任务。
因此,Airflow网络服务器和Airflow工作人员会在不同时间分别读取对DAG /插件代码所做的任何更新。
如果您在Airflow Web服务器上看不到新代码,则当工作人员在新任务运行中重新获取代码时,仍应由工作人员取用。
因此,您无需重新启动Composer即可使工作人员可以接收更改。
您不能在任务执行过程中强迫工作人员抓取并重新编译新代码。
有两种方法刷新Airflow Web服务器,以查看插件代码是否在未更新的情况下进行了更改:
通过Console中的“超越气流配置”标签,将reload_on_plugin_change
部分中的True
属性设置为[webserver]
。
或者,您可以通过“ PYPI PACKAGES”控制台标签专门添加/删除/更新PYPI软件包。非PYPI软件包更改不会触发Web服务器重启。请注意,这还将启动整个Composer环境重启,这可能需要约20分钟的时间。