我有一个包含2个线程的程序。每个线程向远程主机发送不同的命令并将输出重定向到文件。线程使用不同的远程主机。我已经创建了与pxssh的连接,并尝试使用'sendline'将命令发送到远程主机:
s = pxssh.pxssh()
try:
s.login (ip, user, pswd)
except:
logging.error("login: error")
return
logging.debug("login: success")
s.sendline("ls / >> tmpfile.log")
s.prompt()
我可以发送固定数量的命令(每个主机上大约500个命令),之后'sendline'停止工作。连接正常,但我无法在远程主机上获取命令。看起来有些资源耗尽......它有什么用?
答案 0 :(得分:0)
重新作为答案,因为它解决了这个问题:
你在每次写作之间读书吗?如果主机正在产生输出并且你没有读取它,迟早会缓冲一个缓冲区,它会阻塞,直到有空间再写一些。确保在每次写入之前,您可以读取终端中可用的任何数据,即使您不想对其进行任何操作。
如果你真的不关心输出,你可以创建一个不断读入循环的线程,这样你的主线程就可以完全跳过阅读。但是,如果您的代码需要对输出的任何部分执行任何操作,请不要这样做。