在本地计算机上,我创建了virtualenv并安装了Airflow。当dag或插件需要python库时,我会将其安装到同一virtualenv中。
如何跟踪哪些库属于dag,哪些库用于气流本身?我最近删除了一个dag,想要删除它正在使用的库。这很浪费时间,而且我不停地删除手指,而我并没有删除另一个dag正在使用的东西!
答案 0 :(得分:0)
在使用airflow.operators.python_operator.PythonVirtualenvOperator
的{{1}}中,您可能会看到Dag
。
使用PythonOperator
代替VirtualenvOperator
,将PythonOperator
与Dag
的依赖关系隔离开来,您可以保留单独的需求文件。
您可以在需求文件中使用注释来标记Virtualenv
例如
Dag
...,然后删除带有DAG名称的package-one # Dag1.
,grep要求,请先卸载然后删除这些行。
通过这种方式,当您为DAG安装软件包时,需要一个过程来注释需求文件中的Dag
名称。您可以编写脚本来执行此操作。
答案 1 :(得分:0)
特别是对于较大的Airflow用例,我建议使用Airflow作为在不同抽象层上编排任务的一种方式,这样您就不必从Airflow方面管理依赖项。
我建议您看看DockerOperator或KubernetesPodOperator。借助这些,您可以将Python任务构建到Docker容器中,并让Airflow运行这些任务。这样,您就不需要管理Airflow中的Python依赖关系,也不会遇到两个DAG具有冲突依赖关系的灾难情况。但是,这确实需要您具备管理Kubernetes集群的知识。