python - 气流和模块
问题描述
使用 Airflow,我有一个用 python 编写的主应用程序,其中有一些代码需要我放入 Airflow 的 DAG。
- 首先,我对环境有自由,我可以用 PIP 安装我想要的。这是一个独立的应用程序,带有
__main__.py
. - 第二个 get 部署在 Airflow 中,我对可以引入的库和版本有限制。理想情况下,我只想重用第一个中的一小部分代码(数据库访问、配置、模式......等。 .)。
现在我来自 Java 世界,通过创建适当的 jar 来解决这样的问题......但在 python 中,我想知道推荐的解决方案是什么。
我的想法是有这样的结构:
common/
__init__.py
lib1.py
lib2.py
...
theApp/ #standalone app
__init__.py
__main__.py
app.py <-- does use common.lib1.py
theOtherApp/ #airflow stuff with DAGs
__init_.py
script1.py <-- does use common.lib1.py
但我有以下疑问:
theApp
通过像 theApp 一样直接调用来工作,但我如何让它解决共同点???- 如何将 theOtherApp 与依赖项一起部署在气流中?我要复制两个目录
common
吗theOtherApp
?
解决方案
您的第二个问题是肯定的,但不是您构建它的方式。您将 common 和 theApp 目录复制到 theOtherApp 因为 theOtherApp 需要它们
你的第一个问题是可以把common放在python路径的lib路径中,或者把common复制到App目录下
我没有使用 Airflow,但如果它能够运行 python,我相信它们将是一个 python Lib 路径,你可以在某个地方包含你的 common,然后在 theApp 和 theOtherApp 中导入
推荐阅读
- javascript - 如何计算通过循环的项目总数
- java - 复制的父级插入子级而不是更新它们
- react-native - 这是在 sdk 39 中使用 expo 裸工作流在 infoplist 文件中添加字符串的方法吗?#ReactNative
- wireguard - 电线保护隧道和到达 ddns 的问题
- php - 如何在php中动态设计引导列
- node.js - 在 Laravel Forge-Setup 中从 Laravel 应用程序执行“npm”
- python - Python - 子进程 FileNotFoundError:[WinError 2]
- python - 尝试从 python 调用 c++ 函数时出错
- scala - 从 Databricks 环境加载 SnowFlake 数据时出现意外行为
- javascript - 当元素在视图中时更改边框半径 - 如何将百分比更改为像素