如何在虚拟环境中使用Apache气流?

命令

我对使用Apache气流很陌生。我使用pycharm作为我的IDE。我创建一个项目(anaconda环境),创建一个包含DAG定义和Bash运算符的python脚本。当我打开气流网络服务器时,未显示我的DAGS。仅显示默认示例DAG。我的AIRFLOW_HOME变量包含~/airflow所以我在这里存储了我的python脚本,现在显示了。

如何在项目环境中使用它?

是否在每个项目开始时更改环境变量?

有没有一种方法可以为每个项目添加特定的气流主目录?

我不想将DAG存储在默认气流目录中,因为我想将其添加到git存储库中。请帮我。

伊利亚·基西尔(Ilya Kisil)

您可以${AIRFLOW_HOME}/airflow.cfg使用以下格式设置/覆盖环境变量中指定的气流选项:$ AIRFLOW __ {SECTION} __ {KEY}(请注意双下划线)。这是气流文档链接所以你可以简单地做

export AIRFLOW__CORE__DAGS_FOLDER=/path/to/dags/folder

但是,针对不同的项目执行此操作很繁琐且容易出错。或者,您可以考虑使用pipenv代替Anaconda来管理虚拟环境。这里是一个很好的引导有关pipenv,它解决了问题。默认功能之一pipenv是,.env当您在激活virtualenv的情况下生成shell时,它将自动加载文件中定义的变量因此,您的工作流程pipenv如下所示:

cd /path/to/my_project

# Creates venv with python 3.7 
pipenv install --python=3.7 Flask==1.0.3 apache-airflow==1.10.3

# Set home for airflow in a root of your project (specified in .env file)
echo "AIRFLOW_HOME=${PWD}/airflow" >> .env

# Enters created venv and loads content of .env file 
pipenv shell

# Initialize airflow
airflow initdb
mkdir -p ${AIRFLOW_HOME}/dags/

注意:用法的使用Flask==1.03将在最后解释,但这是因为pipenv检查子依赖项是否兼容,以确保可重复性。

因此,完成这些步骤后,您将获得以下项目结构

my_project
├── airflow
│   ├── airflow.cfg
│   ├── airflow.db
│   ├── dags
│   ├── logs
│   │   └── scheduler
│   │       ├── 2019-07-07
│   │       └── latest -> /path/to/my_project/airflow/logs/scheduler/2019-07-07
│   └── unittests.cfg
├── .env
├── Pipfile
└── Pipfile.lock

现在,当您首次初始化气流时,它将创建${AIRFLOW_HOME}/airflow.cfg文件,并将使用/扩展${AIRFLOW_HOME}/dags作为的值dags_folder如果您仍然需要的其他位置dags_folder,则可以.env再次使用file

echo "AIRFLOW__CORE__DAGS_FOLDER=/different/path/to/dags/folder" >> .env

因此,您的.env文件将如下所示:

AIRFLOW_HOME=/path/to/my_project/airflow
AIRFLOW__CORE__DAGS_FOLDER=/different/path/to/dags/folder

我们取得了什么成就以及为什么这样行之有效

  1. 由于您安装airflow在虚拟环境中,因此需要激活它才能使用airflow
  2. 既然您使用做了pipenv,您将需要使用pipenv shell来激活venv
  3. 由于使用pipenv shell,您将始终获得在.env导出到venv中定义的变量最重要的是pipenv仍然是一个子外壳,因此,当您退出它时,所有其他环境变量也将被清除。
  4. 使用气流的不同项目的日志文件等将具有不同的位置。

有关Pipenv的其他说明

  1. 为了将通过pipenv创建的venv用作IDE的项目解释器,请使用提供的路径pipenv --py
  2. 默认情况下,pipenv与conda一样,在同一全局位置创建所有venv,但是您可以.venv通过添加export PIPENV_VENV_IN_PROJECT=1到您的.bashrc(或其他rc)中来更改行为,使其在项目的根目录中创建然后,当您进入项目解释器的设置时,PyCharm将能够自动将其拾取。

使用注意事项 Flask==1.0.3

来自PyPi的气流1.10.3取决于flask>=1.0, <2.0取决于jinja2>=2.7.3, <=2.10.0今天,当我测试代码片段时,最新版本flask1.1.0,具体取决于jinja2>=2.10.1这意味着,尽管pipenv可以安装所有必需的软件,但是它无法锁定依赖项。因此,为了干净地使用我的代码示例,我必须指定flask要求jinja2与气流要求兼容的版本但是没有什么可担心的。airflowGitHub上的最新版本已修复。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在我的Ubuntu bash中使用Python虚拟环境?

如何在虚拟环境中使用编辑器/ IDE | python和venv?

如何在Windows中使用cmd重新输入我的虚拟环境

如何在 vscode jupyter notebook 中使用创建的 python 虚拟环境

如何在虚拟环境中使用系统安装的python软件包?

如何使用虚拟环境并使其默认

如何在Apache Windows的不同虚拟环境中服务2个Django应用程序?

apache/mod_wsgi - 如何使用不同的 python 虚拟环境配置多个 webapps

在虚拟环境中使用输入参数执行 python

无法在Linux的虚拟环境中使用软件包

在虚拟环境中使用代理进行pip安装

在Conda虚拟环境中使用Github的软件包

在Jupyter Notebook中使用Python虚拟环境

在虚拟环境中使用docker命令失败

在虚拟环境中使用DPDK内核NIC接口

如何在另一台计算机上使用python虚拟环境

Python:如何在temp目录创建虚拟环境并使用pip安装模块

如何在 conda 的虚拟环境中安装 Anaconda。

如何在虚拟环境中运行Spyder?

虚拟环境-如何在导入的本地模块中导入?

如何在Pycharm中为Django创建虚拟环境?

如何在Python虚拟环境中安装标准库

如何在 Windows 中激活我的虚拟环境?

如何在虚拟环境中安装SIP和PyQt?

如何在我的python虚拟环境中设置pytest

如何在虚拟环境中安装python模块?

如何在虚拟环境中运行全局安装的Jupyter?

如何在python中运行虚拟环境

如何在Python 3虚拟环境中安装Err?