gpt4 book ai didi

Python Paramiko exec_command 超时不起作用?

转载 作者:行者123 更新时间:2023-12-02 07:09:54 27 4
gpt4 key购买 nike

我得到了以下 ssh 命令,

    try:
print 'trying to restart'
self.ssh.exec_command(RR_CMD % (self.path_ext, self.rport), timeout=1)
print 'restarted'
except:
self.ssh.close()
self.ssh = ssh.create_ssh_client(self.ip, self.port, self. username, self.password)
self.restart()

基本上我正在尝试重新启动远程 Perl 脚本。但有时,比如 2000 个中的 1 个 - 我的 python 程序在 exec_command 行上卡住,有时长达几分钟!

我想使用超时功能,我将其设置为 1 秒,但由于某种原因它不起作用。

最佳答案

我遇到了 exec_command 超时问题,没有按照我的预期进行。例如,我将超时设置为 60,然后发现一个挂起的命令运行了一整晚。我之前做的是

response = client.exec_command(command, timeout=60)
returncode = response[0].channel.recv_exit_status()

但超时为 None 或任何值时,它卡在 recv_exit_status 上,现在,我只是自己管理超时,因为 exec_command 是非 -通过轮询channel.exit_status_ready来阻塞。

start = time.time()
while time.time() < start + timeout:
if response[0].channel.exit_status_ready():
break
time.sleep(1)
else:
raise TimeoutError(f'{command} timed out on {hostname}')
returncode = response[0].channel.recv_exit_status()

关于Python Paramiko exec_command 超时不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35403031/

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