MWAA - 气流 - PythonVirtualenvOperator 需要 virtualenv

2023-11-23

我正在使用AWS的MWAA服务(2.2.2) 运行各种 DAG,其中大多数都是使用标准 PythonOperator 类型实现的。我将 DAG 与任何共享需求一起捆绑到 S3 存储桶中,然后将 MWAA 指向相关对象和版本。到目前为止一切都进展顺利。

我现在想使用以下方法实现 DAGPython虚拟环境运算符类型,AWS 承认不支持开箱即用。我正在关注他们的向导关于如何使用自定义插件修补行为,但继续收到来自 Airflow 的错误,在仪表板顶部以大红色字体显示:

DAG 导入错误 (1) …… AirflowException:PythonVirtualenvOperator 需要 virtualenv,请安装它。

我已经确认 Airflow 确实使用了该插件(我在管理屏幕中看到了它),为了避免产生疑问,我使用了 AWS 在 DAG 示例中提供的确切代码。 AWS 的相关文档非常简单,我还没有偶然发现任何社区讨论。

根据 AWS 的文档,我们希望该插件在启动时在处理任何 DAG 之前运行。该插件本身似乎有效地重写了 venv 命令以使用 pip 安装的版本,而不是安装在计算机上的版本,但是我一直在努力验证事情是否按照我期望的顺序发生。任何有关调试实例行为的指示都将非常感激。

有人遇到过类似的问题吗? MWAA 文档中是否存在需要解决的空白?我错过了一些非常明显的事情吗?

可能相关,但我确实在调度程序日志中看到此警告,这可能表明为什么 MWAA 正在努力解决依赖性?

警告:脚本 virtualenv 安装在 '/usr/local/airflow/.local/bin' 中,该路径不在 PATH 上。


Airflow 使用 Shutil.which 来查找 virtualenv。通过requirements.txt安装的virtualenv不在路径上。将 virtualenv 的路径添加到 PATH 可以解决此问题。

这里的文档是错误的https://docs.aws.amazon.com/mwaa/latest/userguide/samples-virtualenv.html

import os
from airflow.plugins_manager import AirflowPlugin
import airflow.utils.python_virtualenv 
from typing import List
def _generate_virtualenv_cmd(tmp_dir: str, python_bin: str, system_site_packages: bool) -> List[str]:
    cmd = ['python3','/usr/local/airflow/.local/lib/python3.7/site-packages/virtualenv', tmp_dir]
    if system_site_packages:
        cmd.append('--system-site-packages')
    if python_bin is not None:
        cmd.append(f'--python={python_bin}')
    return cmd
airflow.utils.python_virtualenv._generate_virtualenv_cmd=_generate_virtualenv_cmd
#This is the added path code
os.environ["PATH"] = f"/usr/local/airflow/.local/bin:{os.environ['PATH']}"
class VirtualPythonPlugin(AirflowPlugin):                
    name = 'virtual_python_plugin'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MWAA - 气流 - PythonVirtualenvOperator 需要 virtualenv 的相关文章

随机推荐

  • 在覆盖 Equals 的 null 检查之前转换为对象[重复]

    这个问题在这里已经有答案了 只需阅读有关覆盖相等运算符的 msdn 文章here 下面的片段让我困惑 If parameter cannot be cast to Point return false TwoDPoint p obj as
  • Repeater、ListView、DataList、DataGrid、GridView...选择哪一个?

    有这么多不同的控件可供选择 确定使用哪个控件在 ASP NET 中显示数据的最佳实践是什么 这实际上是关于你想要实现的目标 Gridview 设计有限 工作方式类似于 html 表格 更多内置功能 如编辑 更新 页面 排序 很多开销 Dat
  • 计算图像大小比例以调整大小

    我有一个定义的固定宽度和高度来调整图像大小 但是 我对此有问题 因为图像可以具有任何类型的尺寸比 可以是vertical or the 水平的 在这种情况下 固定的宽度和高度会导致问题 我想计算宽度和高度以更聪明的方式 例如 假设我已经定义
  • 如何将另一个元素内的 div 缩放到 100% 高度和宽度

    如何将另一个元素内的 div 缩放至 100 高度和宽度 就我而言 是一个环绕的 td 因为我是一个插件 所以我无法控制页面上的其他 HTML 这是我的 HTML table width 600px height 400px border
  • iOS:ZBar SDK unicode 字符

    使用 ZBar 扫描 QR 码时 该过程生成的字符串无法正确显示 unicode 字符 这个单词M rti通过任何免费使用的 QR 代码生成器 例如http qrcode kaywa com 会导致M rti 在其他问题中 1 2 建议在结
  • HTML5文件上传带有多个进度条

    我正在通过 XmlHTTPRequest 和 HTML5 上传多个文件 我的上传工作正常 但我希望每个文件上传都有一个进度条 然而 我的代码对所有文件上传使用最后一个进度条 而不是每次上传都使用自己的进度条 所以这在客户端主要是视觉上的 但
  • 在 python 中打开并读取 excel .xlsx 文件

    我正在尝试使用 python 打开 excel xlsx 文件 但无法找到方法 我尝试使用 pandas 但它想要使用名为 NumPy 的库我尝试安装 numpy 但它仍然可以找不到 numpy 我也尝试过使用 xlrd 库 但得到以下回溯
  • 作为单独实例运行的单例 Azure 函数

    我们有一个 Azure 函数 该函数应该同时处理多个服务总线触发器 我认为正在发生的情况是 它被拆分到多个实例中 这导致了我们端的一些并发问题 我们需要我们的函数充当单例 这样我们就可以一次处理一个请求而不会发生任何冲突 根据我们在本文中的
  • 从 Perl 中的字符串中删除 CRLF (0D 0A)

    我有一个 Perl 脚本 它在 Linux 上使用 XML 文件 偶尔在某些节点值中存在 CRLF 十六进制 0D0A Dos 新行 生成 XML 文件的系统将其全部写入一行 看起来好像它偶尔会认为这太长并将 CRLF 写入其中一个数据元素
  • 从另一个类调用 AsyncTask

    在现有的应用程序中 我有一个带有扩展 AsyncTask 的内部类的活动 如下所示 public class Activity 1 extends BaseActivity new async execute public class as
  • LINQ 中的 LIKE 运算符

    有没有办法比较 C LINQ 表达式中的字符串 类似于 SQL LIKE操作员 假设我有一个字符串列表 在此列表中我想搜索一个字符串 在 SQL 中 我可以这样写 SELECT FROM DischargePort WHERE PortNa
  • 在循环中将字典附加到 pandas 数据框

    我需要在循环中创建一个字典 并将它们附加到 pandas 数据框中 并匹配 dict 的键名称和数据框的列名称 每次迭代中字典的键值对可能不同 一个空的 pandas 数据框df podcast已经在开头定义了字典中所有可能的键 以下是尚未
  • PHP 中从两个并行索引数组创建关联数组的最直接方法是什么?

    给定以下两个索引数组 a array a b c b array red blue green 生成以下关联数组的最直接 有效的方法是什么 result i want array a gt red b gt blue c gt green
  • 如何在 Windows 10 中安装 OpenSSL?

    我有一个问题 关于如何以及必须在 Windows 中安装 OpenSSl 的版本 以便稍后创建证书 安装 SourceForge 中找到的单一版本 openssl 1 0 2d fips 2 0 10 但它无法正确生成文件 官方网站也有ht
  • 如何在 MATLAB 中将匿名函数转换为符号函数?

    假设我有一个匿名函数f x x 2我想将其转换为符号函数 有内置命令吗 你可以将它传递给 SYM f x x 2 g sym f 但是大多数符号函数在收到函数句柄时会自动执行此操作 subs int ETC
  • python中的控制台选择菜单

    我有一个想法 在 python 中创建一个控制台选择菜单 如下所示 Choose an option gt 1 Do something 1 lt 2 Do something 2 3 Do something 3 4 Do somethi
  • java程序抛出异常后如何继续执行?

    我的示例代码如下 public class ExceptionsDemo public static void main String args try int arr 1 2 3 4 5 6 7 8 9 10 for int i arr
  • Matlab中如何显示n位小数

    我想知道如何在Matlab中使用命令设置显示n位小数 n 必须限制在一些预先确定的数字吗 或者可以为 n 指定任意一个 感谢致敬 您可以将数字转换为字符串n小数位使用SPRINTF命令 gt gt x 1 23 gt gt sprintf
  • android - 线性布局bringToFront()

    我的线性布局中有 4 个按钮 我需要将第一个按钮放在前面 正常顺序是 Button 1 Button 2 Button 3 Button 4 但当我打电话时button1 bringToFront 功能 button1将会像这样结束 But
  • MWAA - 气流 - PythonVirtualenvOperator 需要 virtualenv

    我正在使用AWS的MWAA服务 2 2 2 运行各种 DAG 其中大多数都是使用标准 PythonOperator 类型实现的 我将 DAG 与任何共享需求一起捆绑到 S3 存储桶中 然后将 MWAA 指向相关对象和版本 到目前为止一切都进