各位兄台,厂里有个用 snmp 协议采集温度信息的活,需求是这样子:
1. 有 100 多台设备
2. 每隔 10 秒取一次数据
3. 将取到的数据写入数据库
我现在只实现了采集单台设备信息并写入数据库的功能
要并发采集 100 台设备的信息,不知道要怎么解决
使用 time snmpwalk 测试采集单台设置数据,要 real 0m2.269s
现在只写了一个简单的 for 循环轮循发起请求,但这样的同步模式,前五台设备采集好数据,就已经过了 10s 了
就进入了下一个采集时间片。这样明显杯具了
昨天搜了一下 python 并发操作的一些概念:
1. 使用多进程
2. 使用多线程
3. 使用协程
对于多线程,多进程能理解,但是 同步,异步 和 阻塞和非阻塞和协程关系不是很懂
如果在这个需求里面,批量发送 snmp 请求应该是可以异步操作的
但是取回数据之后,要写回数据库,这个是不是就会被阻塞了?
之前没有写过这种并发的例子。各位兄台,可否指点下,我对需求的分析是否正确
可否有简单的实例参考一下。谢谢
1. 有 100 多台设备
2. 每隔 10 秒取一次数据
3. 将取到的数据写入数据库
我现在只实现了采集单台设备信息并写入数据库的功能
要并发采集 100 台设备的信息,不知道要怎么解决
使用 time snmpwalk 测试采集单台设置数据,要 real 0m2.269s
现在只写了一个简单的 for 循环轮循发起请求,但这样的同步模式,前五台设备采集好数据,就已经过了 10s 了
就进入了下一个采集时间片。这样明显杯具了
昨天搜了一下 python 并发操作的一些概念:
1. 使用多进程
2. 使用多线程
3. 使用协程
对于多线程,多进程能理解,但是 同步,异步 和 阻塞和非阻塞和协程关系不是很懂
如果在这个需求里面,批量发送 snmp 请求应该是可以异步操作的
但是取回数据之后,要写回数据库,这个是不是就会被阻塞了?
之前没有写过这种并发的例子。各位兄台,可否指点下,我对需求的分析是否正确
可否有简单的实例参考一下。谢谢