如何在Airflow中管理Python依赖关系?

时间:2019-07-04 15:33:03

标签: airflow google-cloud-composer

在本地计算机上,我创建了virtualenv并安装了Airflow。当dag或插件需要python库时,我会将其安装到同一virtualenv中。

如何跟踪哪些库属于dag,哪些库用于气流本身?我最近删除了一个dag,想要删除它正在使用的库。这很浪费时间,而且我不停地删除手指,而我并没有删除另一个dag正在使用的东西!

2 个答案:

答案 0 :(得分:0)

在使用airflow.operators.python_operator.PythonVirtualenvOperator的{​​{1}}中,您可能会看到Dag

使用PythonOperator代替VirtualenvOperator,将PythonOperatorDag的依赖关系隔离开来,您可以保留单独的需求文件。

您可以在需求文件中使用注释来标记Virtualenv 例如

Dag

...,然后删除带有DAG名称的package-one # Dag1. ,grep要求,请先卸载然后删除这些行。

通过这种方式,当您为DAG安装软件包时,需要一个过程来注释需求文件中的Dag名称。您可以编写脚本来执行此操作。

答案 1 :(得分:0)

特别是对于较大的Airflow用例,我建议使用Airflow作为在不同抽象层上编排任务的一种方式,这样您就不必从Airflow方面管理依赖项。

我建议您看看DockerOperator或KubernetesPodOperator。借助这些,您可以将Python任务构建到Docker容器中,并让Airflow运行这些任务。这样,您就不需要管理Airflow中的Python依赖关系,也不会遇到两个DAG具有冲突依赖关系的灾难情况。但是,这确实需要您具备管理Kubernetes集群的知识。