运维脚本跑得慢,不是逻辑复杂,而是大量时间花在等待网络 IO 上。
for循环逐台 SSH 巡检 200 台服务器要 10 分钟,用 asyncio 并发执行只要 30 秒。本文给出 3 个可直接落地的 asyncio 运维场景,附完整代码。
痛点:串行脚本吃掉运维时间
每天早上巡检是运维的日常。一个典型场景:
- 200 台服务器,逐台 SSH 执行
df -h+free -h+uptime - 每台连接 + 执行约 3 秒(网络延迟 + 命令执行)
- 串行跑完:200 × 3 = 600 秒 ≈ 10 分钟
问题不在命令本身,而在 IO 等待。SSH 建连、等待响应的时间占了 ...