Netmiko异步连接到100个设备

问题描述

是否可以使用netmiko异步连接100多个设备。 注意到,很少有用thread举例说明的例子。由于设备数量很高,因此与线程实现异步连接是有效的。还有什么是最好的替代方法

解决方法

是的,您绝对可以使用Netmiko和线程进行连接。这并不是真正的问题,因为有大量的IO等待(换句话说,这里的GIL确实不是问题)。

一次可以使用多少个线程取决于一系列因素。鉴于我过去的经验,我希望您可以毫无问题地使用100。

其他解决方案将是Multiprocessing或asyncio。您无法使用Netmiko进行异步处理,因为它不异步并且会阻塞。

这是使用并发期货和多处理的示例解决方案。线程代码几乎相同,只是您将切换到ThreadPoolExecutor。

https://github.com/ktbyers/pyplus_course/blob/master/class10/collateral/CF_PROCESSES/ssh_procs_wait.py

您需要增加线程/进程池中的线程数,即max_threads(这是显示的代码中的错误用语,因为现在它正在使用多个进程)。