使用 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() 获取竞争条件 的相关文章

  • 如何在 AWS CDK 创建的 Python Lambda 函数中安装外部模块?

    我在 Cloud9 中使用 Python AWS CDK 并且我部署简单的 Lambda 函数那应该是发送 API 请求到 Atlassian 的 API当对象上传到 S3 存储桶时 也是由 CDK 创建的 这是我的 CDK 堆栈代码 fr
  • Python - 将宽字符字符串从二进制文件转换为 Python unicode 字符串

    这是漫长的一天 我有点困惑 我正在读取一个包含大量宽字符字符串的二进制文件 我想将它们转储为 Python unicode 字符串 为了解压非字符串数据 我使用 struct 模块 但我不知道如何对字符串执行相同的操作 例如 阅读 系列 一
  • 如何正确地将 MIDI 刻度转换为毫秒?

    我正在尝试将 MIDI 刻度 增量时间转换为毫秒 并且已经找到了一些有用的资源 MIDI Delta 时间刻度到秒 http www lastrayofhope co uk 2009 12 23 midi delta time ticks
  • Python模块可以访问英语词典,包括单词的定义[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个 python 模块 它可以帮助我从英语词典中获取单词的定义 当然有enchant 这可以帮助我检查该单词是否存在于英语中
  • 如何迭代按值排序的 Python 字典?

    我有一本字典 比如 a 6 b 1 c 2 我想迭代一下by value 不是通过键 换句话说 b 1 c 2 a 6 最直接的方法是什么 sorted dictionary items key lambda x x 1 对于那些讨厌 la
  • 从 ffmpeg 获取实时输出以在进度条中使用(PyQt4,stdout)

    我已经查看了很多问题 但仍然无法完全弄清楚 我正在使用 PyQt 并且希望能够运行ffmpeg i file mp4 file avi并获取流式输出 以便我可以创建进度条 我看过这些问题 ffmpeg可以显示进度条吗 https stack
  • Django 模型在模板中不可迭代

    我试图迭代模型以获取列表中的第一个图像 但它给了我错误 即模型不可迭代 以下是我的模型和模板的代码 我只需要获取与单个产品相关的列表中的第一个图像 模型 py class Product models Model title models
  • 如何在 pytest 中将单元测试和集成测试分开

    根据维基百科 https en wikipedia org wiki Unit testing Description和各种articles https techbeacon com devops 6 best practices inte
  • Pandas 中允许重复列

    我将一个大的 CSV 包含股票财务数据 文件分割成更小的块 CSV 文件的格式不同 像 Excel 数据透视表之类的东西 第一列的前几行包含一些标题 公司名称 ID 等在以下列中重复 因为一家公司有多个属性 而不是一家公司只有一栏 在前几行
  • 如何设置 Celery 来调用自定义工作器初始化?

    我对 Celery 很陌生 我一直在尝试设置一个具有 2 个独立队列的项目 一个用于计算 另一个用于执行 到目前为止 一切都很好 我的问题是执行队列中的工作人员需要实例化一个具有唯一 object id 的类 每个工作人员一个 id 我想知
  • Pandas 根据 diff 列形成簇

    我正在尝试使用 Pandas 根据表示时间 以秒为单位 的列中的差异来消除数据框中的一些接近重复项 例如 import pandas as pd numpy as np df pd DataFrame 1200 1201 1233 1555
  • Python 将日志滚动到变量

    我有一个使用多线程并在服务器后台运行的应用程序 为了无需登录服务器即可监控应用程序 我决定包括Bottle http bottlepy org为了响应一些HTTP端点并报告状态 执行远程关闭等 我还想添加一种查阅日志文件的方法 我可以使用以
  • python Soap zeep模块获取结果

    我从 SOAP API 得到如下结果 client zeep Client wsdl self wsdl transport transport auth header lb E authenticate self login res cl
  • 使用 NumPy 将非均匀数据从文件读取到数组中

    假设我有一个如下所示的文本文件 33 346 1223 10 23 11 23 12 23 13 23 14 23 15 23 16 24 10 24 11 24 12 24 13 24 14 24 15 24 16 25 14 25 15
  • Tkinter - 浮动窗口 - 调整大小

    灵感来自this https stackoverflow com a 22424245 13629335问题 我想为我的根窗口编写自己的调整大小函数 但我刚刚注意到我的代码显示了一些性能问题 如果你快速调整它的大小 你会发现窗口没有像我希望
  • 您可以将操作直接应用于map/reduce/filter 中的参数吗?

    map and filter通常可以与列表理解互换 但是reduce并不那么容易被交换map and filter 此外 在某些情况下我仍然更喜欢函数语法 但是 当您需要对参数本身进行操作时 我发现自己正在经历语法体操 最终必须编写整个函数
  • Elastic Beanstalk 中的 enum34 问题

    我正在尝试在 Elastic Beanstalk 中设置 django 环境 当我尝试通过requirements txt 文件安装时 我遇到了python3 6 问题 File opt python run venv bin pip li
  • 检查字典键是否有空值

    我有以下字典 dict1 city name yass region zipcode phone address tehsil planet mars 我正在尝试创建一个基于 dict1 的新字典 但是 它不会包含带有空字符串的键 它不会包
  • 从 Twitter API 2.0 获取 user.fields 时出现问题

    我想从 Twitter API 2 0 端点加载推文 并尝试获取标准字段 作者 文本 和一些扩展字段 尤其是 用户 字段 端点和参数的定义工作没有错误 在生成的 json 中 我只找到标准字段 但没有找到所需的 user fields 用户
  • Scrapy Spider不存储状态(持久状态)

    您好 有一个基本的蜘蛛 可以运行以获取给定域上的所有链接 我想确保它保持其状态 以便它可以从离开的位置恢复 我已按照给定的网址进行操作http doc scrapy org en latest topics jobs html http d

随机推荐

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

    我在用着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