Apache Airflow Celery Executor。导入一个本地自定义的python包
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Apache Airflow Celery Executor。导入一个本地自定义的python包相关的知识,希望对你有一定的参考价值。
我使用的是Bitnami的预包装Airflow多层架构,可以在这里找到。
以下是他们对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'
我看了其他的帖子,也试过这些方法,但似乎没有什么效果。我使用芹菜执行器的事实是否改变了什么?我是新来的,所以如果你需要更多细节,请告诉我。
好吧,我找到了一个解决方案。
首先,我发现了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。
我不知道插件文件夹是要这样用的,但是这个可以用。
以上是关于Apache Airflow Celery Executor。导入一个本地自定义的python包的主要内容,如果未能解决你的问题,请参考以下文章