Paramiko stdout.readlines太慢

问题描述

我在Python和Django代码中使用Paramiko执行命令。这是我的代码

client = SSHClient()
client.set_missing_host_key_policy(AutoAddPolicy())
client.connect(<host>,username=<username>,password=<password>)
            
stdin,stdout,stderr =
    client.exec_command("curl -X POST http://127.0.0.1:8080/predictions -T image.jpg")
lines = stdout.readlines()

每个命令stdout.readlines()的执行时间为0.59s。对于我的接近实时系统,这不是可接受的时间。任何人都可以提出任何建议以加快阅读过程吗?

解决方法

SSHClient.exec_command仅启动命令。它不等待命令完成。 readlines就是这样做的。因此readlines所需的时间与命令所需的时间相同。


强制性警告:请勿使用AutoAddPolicy –这样做会失去对MITM attacks的保护。有关正确的解决方案,请参见Paramiko "Unknown Server"