用于监视设备的Python脚本

时间:2019-02-04 11:03:36

标签: python monitoring

我被困在一个地区。我在MySQL数据库中几乎没有为不同的轮询间隔设置的设备。例如,我总共有4台设备,其中2台用户希望每5分钟间隔轮询一次,另外2台用户每10分钟轮询一次,而每7分钟应轮询一次。

我想用python构建一个解决方案,该解决方案从数据库中选择这些设备及其轮询间隔,然后开始以其定义的轮询间隔连续轮询这些设备。

由于我无法创建多个轮询脚本(每个脚本一个),因为它将过度利用CPU资源。而且,如果设备数量达到1000个,那么一次轮询所有1000个设备将是一个问题。它更像是一个监视解决方案,可以持续运行并监视设备。

我真的被困在这一点上。多谢您的协助。

1 个答案:

答案 0 :(得分:0)

为每个间隔生成一个工作人员将完成这项工作。相同的代码如下所示:

from time import sleep
from multiprocessing import Process

intervals = [1, 2, 3] # hardcoding it to check, fetching it from db would be better

def generate_poll_worker(interval):
    def poll_devices():
        while True:
            # fetch the devices and poll them
            sleep(interval * 60)

    return poll_devices

def worker_process(interval):
    poll = generate_poll_worker(interval)
    poll()

workers = []

for interval in intervals:
    worker = Process(target=worker_process, args=(interval,))
    worker.start()
    workers.append(worker)

for worker in workers:
    worker.join()