这里的情况很有趣。目前我有一个简单的 Flask API,它连接到后端的网络设备并检索命令输出。
from netmiko import ConnectHandler
def _execute_cli(self, opt, command):
"""
Internal method to create netmiko connection and
execute command.
"""
try:
net_connect = ConnectHandler(**opt)
cli_output = (net_connect.send_command(command))
except (NetMikoTimeoutException, NetMikoAuthenticationException,) as e:
reason = e.message
raise ValueError('Failed to execute cli on %s due to %s', opt['ip'], reason)
except SSHException as e:
reason = e.message
raise ValueError('Failed to execute cli on %s due to %s', opt['ip'], reason)
except Exception as e:
reason = e.message
raise ValueError('Failed to execute cli on %s due to %s', opt['ip'], reason)
return cli_output
def disconnect(connection):
connection.disconnect()
每个命令输出都会在本地缓存一段时间。问题是,有人可以同时进行多个连接,并且设备有连接限制(比如说 7)。如果调用过多,会发生 SSH 连接问题,因为已达到最大连接数。
我要做的是在指定的时间段(比如说,5 分钟)内跨设备的这些 API 调用保留单个会话,这样我就不会填充设备上的连接。
请指教。