Apache Airflow Celery Executor。导入一个本地自定义的python包

问题描述 投票:0回答:1

我使用的是Bitnami的预包装Airflow多层架构,可以在这里找到。

https:/azure.microsoft.comen-usblogbitnami-apache-airflow-multi-tier-now-available-in-azure-marketplace。

以下是他们对DAGS在各节点间共享的介绍。

所有节点都有一个共享卷来同步DAG文件。

DAG文件存储在节点的一个目录中。这个目录是一个外部卷,安装在所有节点(包括worker、scheduler和web服务器)的同一个位置。由于它是一个共享卷,文件在服务器之间自动同步。从这个共享卷中添加、修改或删除DAG文件,整个Airflow系统都会被更新。

所以,我把我的dag目录设置成这样。

/opt/bitnami/airflow/dags
|
├── dag.py
└── package
      ├── __init__.py
      └── module.py 

我的DAG目录下的导入是这样的。

from package.module import something

但我得到了这个错误

Broken DAG: [/opt/bitnami/airflow/dags/dag.py] No module named 'package'

我看了其他的帖子,也试过这些方法,但似乎没有什么效果。我使用芹菜执行器的事实是否改变了什么?我是新来的,所以如果你需要更多细节,请告诉我。

python celery airflow bitnami python-packaging
1个回答
0
投票

好吧,我找到了一个解决方案。

首先,我发现了airflow插件管理器。看起来它主要是用来构建你自己的自定义操作符,钩子等,但我想我可以在我的方案中使用它。

于是我检查了bitnami提供的airflow.cfg文件,看到了参数。

plugins_folder=/opt/bitnami/airflow/plugins

这个目录在机器中并不存在,所以我创建了这个目录,并把我的包放到了那里(没有做任何修改)。

然后,我重新启动了web服务器节点。 节点来接收这个变化。

现在我可以在我的DAG脚本中运行导入,和以前一样,没有任何问题。

from package.module import something

下一步我将把这个插件文件夹与包含我们的软件包的仓库同步,就像我同步这里的DAGS文件夹一样。

https:/docs.bitnami.comazure-templatesinfrastructureapache-airflowconfigurationsync-dags。

我不知道插件文件夹是要这样用的,但是这个可以用。

© www.soinside.com 2019 - 2024. All rights reserved.