我正在尝试加快Paramiko SSH到两个网络设备的连接速度。我想为此使用asyncio,但我不确定我的实现是否正确,因为我没有看到执行时间上的任何好处,在不使用它的情况下,脚本每次执行大约6秒。其想法是,让第二台主机启动其SSH连接,而无需等待第一台主机的SSH连接建立。
以下是我当前的代码,它可以运行,但不会产生任何好处。任何如何使其发挥作用或改进的建议(如果可能)。
import paramiko
import time
import asyncio
async def sshTest(ipaddress,deviceUsername,devicePassword,sshPort): #finalDict
try:
print("Performing SSH Connection to the device")
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(ipaddress, username=deviceUsername, password=devicePassword, port=sshPort, look_for_keys=False, allow_agent=False)
print("Channel established")
except Exception as e:
print(e)
async def main():
print("Session 1
")
await sshTest('192.168.255.11','admin','admin','22')
print("Session 2
")
await sshTest('192.168.254.11','admin','admin','22')
if __name__ == "__main__":
start = time.time()
asyncio.run(main())
end = time.time()
print("The time of execution of above program is :", end-start)
如果要异步运行此任务,则需要执行以下操作
async def main():
ip_list = ['192.168.255.11','192.168.255.11']
tasks = []
for ip in ip_list:
tasks.append(asyncio.create_task(sshTest(ip,'admin','admin','22')))
await asyncio.gather(*tasks)