使用 stderr=PIPE 和 Popen.communicate() 获取竞争条件

2023-12-01

我正在开发一个 kubernetes flexvolume 驱动程序,用于创建 LVM 设备,并创建和挂载文件系统。

由于某种原因,我偶尔会遇到死锁,根据文档,使用 Popen.communicate() 时不应发生这种死锁。

 Traceback (most recent call last):
  File "/usr/libexec/kubernetes/kubelet/plugins/volume/exec/example~lvm/lvm", line 356, in <module>
    attach(cfg)
  File "/usr/libexec/kubernetes/kubelet/plugins/volume/exec/example~lvm/lvm", line 231, in attach
    result = _lvcreate(cfg['lv_name'], cfg['lv_size'], cfg['vg_name'])
  File "/usr/libexec/kubernetes/kubelet/plugins/volume/exec/example~lvm/lvm", line 148, in _lvcreate
    _out, _err = proc.communicate()
  File "/usr/lib64/python2.7/subprocess.py", line 800, in communicate
    return self._communicate(input)
  File "/usr/lib64/python2.7/subprocess.py", line 1401, in _communicate
    stdout, stderr = self._communicate_with_poll(input)
  File "/usr/lib64/python2.7/subprocess.py", line 1455, in _communicate_with_poll
    ready = poller.poll()
KeyboardInterrupt

在我的 lvcreate 和 mkfs 调用期间有时会发生这种情况。环境shell=True似乎并不重要。

_lv  = None
_cmd = [ '/sbin/lvcreate', '--type', 'linear', '--size', lv_size, '--name', lv_name, vg_name ]
_out, _err = None, None
proc = subprocess.Popen(_cmd, shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
_out, _err = proc.communicate()
if proc.returncode != 0:
    return (_lv, _err, proc.returncode)

环境:

$ uname -a
Linux myhost.example.com 4.1.12-124.17.2.el7uek.x86_64 #2 SMP Tue Jul 17 20:28:07 PDT 2018 x86_64 x86_64 x86_64 GNU/Linux

# python -V
Python 2.7.5

如果我设置stderr=None代替stderr=subprocess.PIPE我从来没有看到这个问题。


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 stderr=PIPE 和 Popen.communicate() 获取竞争条件 的相关文章

  • “扩展”numpy ndarray 的好方法?

    有没有 扩展 numpy ndarray 的好方法 假设我有一个像这样的 ndarray 1 2 3 4 我希望每行通过填充零来包含更多元素 1 2 0 0 0 3 4 0 0 0 我知道一定有一些蛮力的方法可以做到这一点 比如构造一个带有
  • 如何在 Python 中使用 .format() 打印“for”循环中的列表?

    我是 Python 新手 我正在编写一段非常简单的代码 使用 for 循环打印列表的内容 format 我想要如下的输出 但我收到此错误 names David Peter Michael John Bob for i in names p
  • 不能在jinja2宏中使用current_user?

    我使用 Flask Login 它提供了current user模板中的对象 我想编写一个宏来显示评论表单或登录链接 具体取决于用户是否登录 如果我直接在模板中使用此代码 它会起作用 if current user is authentic
  • 如何使用 python 从嵌套表结构中识别最终父级?

    我有下表 我的问题是 我如何以编程方式识别最终父级 以下是通过示例解释的规则 the id 5 0的父母是51 0 身份证号51 0没有父母 因此 id5 0的最终父级是51 0 the id 6 0的父母是1 0 身份证号1 0的父母是1
  • Flask/Apache 提交按钮用于文件上传

    我有一个在 apache 后面运行的 Flask 应用程序 在我的 index html 页面上有一个文件上传按钮和一个提交按钮 如下所示
  • PyQt4 信号和槽

    我正在使用 PyQt4 编写我的第一个 Python 应用程序 我有一个 MainWindow 和一个 Dialog 类 它是 MainWindow 类的一部分 self loginDialog LoginDialog 我使用插槽和信号 这
  • 使用解析将 ** 运算符更改为幂函数?

    我的要求是将 运算符更改为幂函数 例如 1 Input B 2 Output power B 2 2 B 2 T 2 X Output power B 2 我写了下面的正则表达式来解决这个问题 rx r a zA Z0 9 a zA Z0
  • Python3如何安装.ttf字体文件?

    我想使用 python3 更精确的 Python 3 6 代码在 Windows 10 上安装 ttf 字体文件 我用谷歌搜索 但我发现的唯一的就是这个使用python在windows上安装TTF字体 https stackoverflow
  • 不使用 graphviz/web 可视化决策树

    由于某些限制 我无法使用 graphviz webgraphviz com 可视化决策树 工作网络与另一个世界是封闭的 问题 是否有一些替代实用程序或一些 Python 代码用于至少非常简单的可视化可能只是决策树的 ASCII 可视化 py
  • 生产环境的 Flask-Login 与 Flask-Security

    我正在构建一个功能 供用户注册 登录 验证和授权自己 特别是使用 Python Flask 作为后端 我找到了一些解决方案 例如flask login and flask security 据我了解 flask login实际上并没有进行任
  • 自定义信号的声明

    在 Qt 中 我们可以通过将自定义信号设为静态变量来创建它们 然后我们使用self signame反而classname signame 这样就在类中创建了一个实例变量 我想了解这种模式之外的理论 这是我尝试过的一些伪代码 这些伪代码已记录
  • 使用 Twisted Python 的 UDP 客户端和服务器

    我想创建一个服务器和客户端 使用 Twisted 从网络发送和接收 UDP 数据包 我已经用 Python 中的套接字编写了此代码 但想利用 Twisted 的回调和线程功能 然而 我需要 Twisted 设计方面的帮助 我想接收多种类型的
  • 使用主宰器将实时数据发送给客户端

    我尝试使用 Flask 的主宰框架 以便按照 Flask 代码片段将实时信息发送到客户端浏览器http flask pocoo org snippets 80 http flask pocoo org snippets 80 当我尝试为我的
  • 如何对嵌套函数进行单元测试? [复制]

    这个问题在这里已经有答案了 您将如何对嵌套函数进行单元测试f1 在下面的例子中 def f def f1 return 1 return 2 或者需要测试的函数不应该嵌套吗 有一个类似的问题这个链接 https stackoverflow
  • pip-tools 的干净设置不会编译非常基本的 pyproject.toml

    使用全新的pip tools设置总是会导致Backend subprocess exited error pyproject toml project dependencies openpyxl gt 3 0 9 lt 4 在仅包含上述 p
  • RuntimeError:模型类 django_messages.models.Message 未声明显式 app_label 并且不在 INSTALLED_APPS 中的应用程序中

    我正在尝试使用https github com arneb django messages https github com arneb django messages打包我的消息传递内容并尝试了以下操作 pip install git h
  • Python:如何使用生成器来避免 sql 内存问题

    我有以下方法来访问 mysql 数据库 并且查询在服务器中执行 我无权更改有关增加内存的任何内容 我对生成器很陌生 并开始阅读更多有关它的内容 并认为我可以将其转换为使用生成器 def getUNames self globalUserQu
  • Tensorboard——High-level节点的计算时间与其子节点计算时间的总和不同

    继tutorial https www tensorflow org programmers guide graph viz在 TensorFlow 上 我试图使用张量板来理解运行时统计数据 我发现代表名称范围的高级节点的计算时间不等于其子
  • 在 Mac (Catalina) 上安装 PyGame 时出错 [重复]

    这个问题在这里已经有答案了 我一直在尝试将 PyGame 安装到 Catalina 上的 Mac 上 但不知道如何安装 我收到的错误消息是 SystemExit error command gcc failed with exit stat
  • 从 xgb.train() 获取概率

    我是 Python 和机器学习的新手 我在网上搜索了我的问题 并尝试了人们建议的解决方案 但仍然没有得到它 如果有人能帮助我 我将非常感激 我正在开发我的第一个 XGboost 模型 我已经使用 xgb XGBClassifier 调整了参

随机推荐

  • 推送通知后离子设置徽章

    我在用着IONIC框架 我想在收到推送通知后设置应用程序的徽章 当我的申请关闭时 有办法做到这一点吗 这是为其他遇到同样问题的人准备的 我相信您正在谈论使用从服务器收到的更新徽章编号使徽章可见 首先要在 Push 的 init 方法的代码中
  • 设置对话框列表中文本的样式

    我使用了这里给出的说明 http developer android com guide topics ui dialogs html AddingAList在对话框中创建列表 问题是我似乎没有找到将长文本包装在选项内的方法 请看下图 请告
  • V8如何管理对象实例的内存?

    http code google com apis v8 design html 上一页解释了 v8 团队用于实现快速属性访问的优化技术 但它的对象实例又如何呢 新属性可以随时添加到对象中 因此应该允许其大小增长 它是否只是简单地分配默认大
  • Android java.lang.ClassCastException:android.widget.RelativeLayout 无法转换为 android.widget.EditText

    当我点击一个按钮从一个活动转到另一个活动时 我在 Android 中遇到以下异常 我是 Android 开发新手 所以这可能不是最聪明的问题 java lang ClassCastException android widget Relat
  • 请求如何确定响应的编码?

    怎样才能有回应apparent encoding属性不正确 我有下面的代码片段 演示了我的问题 import requests url https item jd com 100000177760 html r requests get u
  • 将单元测试添加到现有的 ASP.NET Web 表单应用程序

    我有一个现有的 asp net webforms 应用程序 我想添加一些单元测试 但不确定具体如何进行 该应用程序是数据库驱动的功能 我想您可以将其与高级论坛进行比较 逻辑 数据访问和表示大部分是分开的 我应该测试什么方法 如何处理数据库和
  • VSCode TypeScript Intellisense 不工作

    从字面上看 我在这里拔掉了我的头发 Mac 上的 VSCode 1 6 0 Typescript 2 0 2 但我也尝试过 2 0 0 我尝试过以 es5 es6 为目标 无论是否有 commonjs 模块目标 我无法获取项目本地其他文件的
  • Prolog:停止条件?

    这是一个非常简单的 Prolog 知识库 spouse bill cheryl married X Y spouse X Y married X Y spouse Y X 我运行了以下查询 请注意 有时答案是正确的名称 仅 但有时答案是正确
  • PHP 语法错误 T_ENCAPSED_AND_WHITESPACE

    我开始学习 php 基础知识 但在理解如何将代码与字符串混合在一起时遇到一些问题 我发现了一种很棒且有用的样式来打印字符串块 但我不知道名称 也无法找到示例 下面的代码返回错误 解析错误 语法错误 意外的 T ENCAPSED AND WH
  • 如何使用 C# 以编程方式创建 VC++ 项目?

    我想用C 创建一个VC 项目 我看到这个MSDN 文章关于创造C and VB console application projects 但是VC 项目怎么办呢 ADD 1 我遇到了与下面的线程完全相同的问题 它的解决方案是操纵原始XML
  • Div 高度 100% 并扩展以适合内容 [重复]

    这个问题在这里已经有答案了 我的页面上有一个 div 元素 其高度设置为 100 身体的高度也设置为 100 内部 div 有背景等 并且与正文背景不同 这适用于使 div 高度为浏览器屏幕高度的 100 但问题是该 div 内的内容垂直延
  • 如何使用 VisualState AdaptiveTrigger 更改 ListView Item FontSize

    我正在使用视觉状态自适应触发器根据有效的屏幕分辨率更改页面外观 这很好用 但我无法让它适用于 ListView 项目 我的 ListView 看起来像这样
  • 使用 Spring 方面进行编译时代码检测的 Ant 目标

    我使用 Netbeans 6 7 和 Ant 开发了一个 Web 应用程序 web 应用程序可以工作 但我想重构代码以使用 Configurable Spring 注释来实现更清晰的依赖注入 我能够让 Spring 方面的加载时编织 LTW
  • 关于C++内联函数的两个问题

    当我在 C 中编译内联函数时 我有疑问 递归函数可以与内联一起使用吗 如果是 请描述如何 我确信循环不能使用它 但我读过一些地方 如果我们传递常量值 递归会起作用 我的朋友给我发送了一些内联递归函数作为常量参数 并告诉我这可以工作 但在我的
  • 如何在两个 .NET AppDomain 之间传递未知类型?

    我有一个 NET 应用程序 其中单独 AppDomain 中的程序集必须共享按值传递的序列化对象 这两个程序集都引用一个共享程序集 该程序集定义服务器类的基类 并定义将在域之间传递的实体类型的基类 public abstract class
  • 使用node.js在mongodb中存储文件

    您好 我需要使用 node js 在 mongodb 中存储一个文件 该文件放置在我的桌面中 我必须将其存储在我的 mongodb 数据库中 我遇到了一个名为 gridfs 的东西 但不知道如何进一步进行 任何帮助都会非常感激 如果您的文件
  • 如何在 swift 结构/类类型中支持这种 init?

    example struct FanSpeed var fanSpeed Int willSet previousFanSpeed fanSpeed var previousFanSpeed Int init fanSpeed Int se
  • 在 C++ 中是否有一种优雅的方式来表示包含不同类型的映射?

    我正在构建一个类 我想使用各种参数进行配置 其中可能是 int double and string or const char 对于这个问题 在像 Ruby 这样的语言中 我将构建一个初始化函数 该函数采用由字符串作为键控的哈希值 例如 c
  • Objective C,如何使活动视图出现在顶部通知菜单上

    如果您打开 iPhone 电子邮件应用程序 活动视图会出现在通知菜单顶部 Wifi 图标旁边 我怎样才能做到这一点 UIApplication sharedApplication setNetworkActivityIndicatorVis
  • 使用 stderr=PIPE 和 Popen.communicate() 获取竞争条件

    我正在开发一个 kubernetes flexvolume 驱动程序 用于创建 LVM 设备 并创建和挂载文件系统 由于某种原因 我偶尔会遇到死锁 根据文档 使用 Popen communicate 时不应发生这种死锁 Traceback