![](/img/trans.png)
[英]How to have a mix of both Celery Executor and Kubernetes Executor in Apache Airflow?
[英]Apache Airflow Celery Executor: Import a local custom python package
我正在使用 Bitnami 的预打包 Airflow 多层架构,在这里可以找到:
以下是他们对如何跨节点共享 DAGS 的看法:
所有节点都有一个共享卷来同步 DAG 文件。
DAG 文件存储在节点的目录中。 此目录是安装在所有节点(工作程序、调度程序和 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'
我已经阅读了其他线程,并尝试了这些解决方案,但似乎没有任何效果。 我使用 celery 执行器的事实有什么改变吗? 我是新来的,如果您需要更多详细信息,请告诉我。
好吧,我找到了解决方案。
首先,我发现了 airflow 插件管理器。 看起来它主要用于构建您自己的自定义运算符、钩子等,但我想我可以将它用于我的场景。
于是我查看了bitnami提供的airflow.cfg文件,看到了参数:
plugins_folder=/opt/bitnami/airflow/plugins
这个目录在机器中不存在,所以我创建了它并将我的 package 放在那里(没有对其进行任何更改)。
然后,我重新启动了 web 服务器节点和调度程序节点以获取此更改。
现在我可以像以前一样在我的 DAG 脚本中运行导入,没有任何问题:
from package.module import something
对我来说,接下来的步骤是将这个插件文件夹与包含我们包的存储库同步,就像我同步在这里找到的 DAGS 文件夹一样:
https://docs.bitnami.com/azure-templates/infrastructure/apache-airflow/configuration/sync-dags/
我不确定插件文件夹是否打算以这种方式使用,但这有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.