oslo_concurrency.processutils¶
系统级工具和辅助函数。
- 异常 oslo_concurrency.processutils.InvalidArgumentError(message=None)¶
基础:
Exception
- 类 oslo_concurrency.processutils.LogErrors(value, names=<未提供>, *values, module=None, qualname=None, type=None, start=1, boundary=None)¶
基类:
IntEnum枚举,影响错误发生时是否记录 stdout 和 stderr。
在 2.7 版本中添加。
- ALL = 1¶
在每次发生错误时记录错误。
- DEFAULT = 0¶
不记录错误。
- FINAL = 2¶
仅在最后一次出错尝试时记录错误。
- 异常 oslo_concurrency.processutils.NoRootWrapSpecified(message=None)¶
基础:
Exception
- 异常 oslo_concurrency.processutils.ProcessExecutionError(stdout=None, stderr=None, exit_code=None, cmd=None, description=None)¶
基础:
Exception
- 类 oslo_concurrency.processutils.ProcessLimits(**kw)¶
基类:
object进程的资源限制。
属性
address_space: 地址空间限制,以字节为单位
core_file_size: 核心文件大小限制,以字节为单位
cpu_time: CPU 时间限制,以秒为单位
data_size: 数据大小限制,以字节为单位
file_size: 文件大小限制,以字节为单位
memory_locked: 锁定的内存限制,以字节为单位
number_files: 最大打开文件数
number_processes: 最大进程数
resident_set_size: 最大常驻集大小 (RSS),以字节为单位
stack_size: 堆栈大小限制,以字节为单位
此对象可用于
execute()的 prlimit 参数。- prlimit_args()¶
创建用于 prlimit 命令行的参数列表。
- 异常 oslo_concurrency.processutils.UnknownArgumentError(message=None)¶
基础:
Exception
- oslo_concurrency.processutils.execute(*cmd, **kwargs)¶
辅助方法,用于通过子进程执行 shell 命令。
允许可选重试。
- 参数:
cmd (字符串) – 传递给 subprocess.Popen。
cwd (字符串) – 设置当前工作目录
process_input (字符串或字节) – 发送到打开的进程。
env_variables (字典) – 环境变量及其值,这些变量将设置为进程。
check_exit_code (布尔值、整数或 [整数]) – 单个布尔值、整数或允许的退出代码列表。默认为 [0]。除非程序以其中一个代码退出,否则引发
ProcessExecutionError。delay_on_retry (布尔值) – True | False。默认为 True。如果设置为 True,则在重试之前等待一小段时间。
attempts (整数) – 重试 cmd 的次数。
run_as_root (布尔值) – True | False。默认为 False。如果设置为 True,则命令将由 root_helper kwarg 中指定的命令进行前缀。
root_helper (字符串) – 用于为 run_as_root=True 的命令添加前缀的命令
shell (布尔值) – 是否应使用 shell 来执行此命令。默认为 false。
loglevel (int. (应为 logging.DEBUG 或 logging.INFO)) – execute 命令的日志级别。
log_errors (
LogErrors) – 是否应在发生错误时记录 stdout 和 stderr?可能的值为DEFAULT、FINAL或ALL。请注意,FINAL和ALL的值仅在请求使用attempts参数进行多次命令执行尝试时相关。binary (布尔值) – 在 Python 3 上,如果 binary 为 True,则将 stdout 和 stderr 作为字节返回,否则作为 Unicode 返回。
on_execute (函数(
subprocess.Popen)) – 此函数将在进程创建时使用该对象作为参数进行调用。其目的是允许调用者跟踪异步进程创建。processutils.executeon_completion (函数(
subprocess.Popen)) – 此函数将在进程完成时使用该对象作为参数进行调用。其目的是允许调用者跟踪异步进程完成。processutils.executepreexec_fn (函数()) – 此函数将在子进程执行之前在子进程中调用。警告:在 Windows 上,我们无声地放弃此 preexec_fn,因为它不受 Windows 上 subprocess.Popen 的支持(引发 ValueError)
prlimit (
ProcessLimits) – 设置子进程的资源限制。有关详细说明,请参阅下文。python_exec (字符串) – 用于强制执行 prlimit 的 python 可执行文件。如果未设置或为 None,则默认使用 sys.executable。
timeout (int) – 等待进程终止的超时时间(秒)。如果达到超时时间,则引发
subprocess.TimeoutExpired。
- 返回值:
来自进程执行的 (stdout, stderr)
- 引发:
UnknownArgumentError在接收到未知参数时- 引发:
- 引发:
OSError- 引发:
subprocess.TimeoutExpired
可以使用 prlimit 参数来设置子进程的资源限制。如果使用此参数,则子进程将由包装器进程生成,该进程将在生成命令之前设置限制。
版本 3.17 中更改:process_input 现在可以在 python3 上是字节或字符串。
版本 3.4 中更改:添加了可选参数 prlimit。
版本 1.5 中更改:添加了可选参数 cwd。
版本 1.9 中更改:添加了可选参数 binary。在 Python 3 上,stdout 和 stderr 现在默认作为 Unicode 字符串返回,如果 binary 为 true,则作为字节返回。
版本 2.1 中更改:添加了可选参数 on_execute 和 on_completion。
版本 2.3 中更改:添加了可选参数 preexec_fn。
- oslo_concurrency.processutils.get_worker_count()¶
实用工具,用于获取默认工作器数量。
- 返回值:
如果可以确定,则为 CPU 数量,否则返回默认工作器数量 1。
- oslo_concurrency.processutils.ssh_execute(ssh, cmd, process_input=None, addl_env=None, check_exit_code=True, binary=False, timeout=None, sanitize_stdout=True)¶
通过 SSH 运行命令。
- 参数:
ssh – SSH 连接对象。
cmd – 要运行的命令字符串。
check_exit_code – 是否应为非零退出代码引发异常。
timeout – 命令执行的最大时间(秒)。
sanitize_stdout – 默认为 True。如果设置为 True,则 stdout 将被清理,即命令输出中的任何敏感信息(如密码)将被屏蔽。
- 返回值:
来自通过 SSH 执行命令的 (stdout, stderr)
版本 1.9 中更改:添加了可选参数 binary。
- oslo_concurrency.processutils.trycmd(*args, **kwargs)¶
execute() 的包装器,以便更轻松地处理警告和错误。
返回一个 (out, err) 元组的字符串,其中包含命令的 stdout 和 stderr 的输出。如果“err”不为空,则可以认为该命令已失败。
- 参数:
discard_warnings (布尔值) – True | False。默认为 False。如果设置为 True,则对于成功的命令,stderr 将被清除
- 返回值:
来自进程执行的 (out, err)