gpt4 book ai didi

python - Salt - 如何异步获取 cmd_async 输出

转载 作者:太空宇宙 更新时间:2023-11-04 01:23:50 25 4
gpt4 key购买 nike

我需要在主服务器上使用 salt-api 同时运行多个 salt 命令。当我想以异步方式获取输出时,问题就来了。

假设我在运行器中有以下代码(更像是伪代码)(仅作为示例):

client = salt.client.LocalClient()
for fun in funs:
jid = client.cmd_async(target, fun, [arg])
jobs.append(jid)

out = {}
while len(jobs):
for jid in jobs:
# this can be any function that can in some way assure me about the state
# whether the command it's still running or it finished the job
state = get_salt_cmd_state(jid)

# checking if that command is really finished
# in order to get it's output
if state == FINISHED:
out[jid] = get_salt_cmd_output(jid)
jobs.remove(jid)

查看 salt,在 github ( salt/client/init.py ) 上,您可以找到一些方法来执行此操作,但大多数方法至少部分阻塞并且还需要 minions 列表作为参数。

有什么好的方法可以让它发挥作用吗?

最佳答案

我认为您正在寻找的是 salt/client/__init__.py 中的 get_cache_returns() 方法。看起来它根本没有阻塞,而是返回给定 jid 的作业缓存的内容。如果它返回一个空的字典,那么如果我正确地遵循代码,那么该工作就没有完成。

关于python - Salt - 如何异步获取 cmd_async 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19429441/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com