气流和模块

时间:2019-08-03 10:54:26

标签: python airflow python-module

在使用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及其依赖项?我是否同时复制目录commontheOtherApp

1 个答案:

答案 0 :(得分:1)

您的第二个问题是“是”,但不是您的结构方式。您将把common和theApp目录都复制到theOtherApp,因为theOtherApp需要它们

您的第一个问题是,您可以将common放置在python路径的Lib路径中或将common复制到App目录中

我没有使用Airflow,但如果它能够运行python,我确定它们将是python Lib路径,您可以在其中包含您的常用内容,然后在theApp和TheOtherApp中导入