用于监视设备的Python脚本

用于监视设备的Python脚本,python,monitoring,Python,Monitoring,我被困在一个地方。我在MySQL数据库中几乎没有为不同的轮询间隔设置的设备。例如,total I有4台设备,其中2台用户希望每隔5分钟轮询一次,另外两台10分钟轮询一次,另外一台应每7分钟轮询一次 我想用python构建一个解决方案,从数据库和它们的轮询间隔中选择这些设备,然后开始按照它们定义的轮询间隔连续轮询这些设备 因为我不能创建多个轮询脚本(每个脚本一个),因为这样会过度利用CPU资源。如果设备数量达到1000台,那么一次对所有1000台设备进行轮询将是一个问题。它更像是一个持续运行和监视

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

我想用python构建一个解决方案,从数据库和它们的轮询间隔中选择这些设备,然后开始按照它们定义的轮询间隔连续轮询这些设备

因为我不能创建多个轮询脚本(每个脚本一个),因为这样会过度利用CPU资源。如果设备数量达到1000台,那么一次对所有1000台设备进行轮询将是一个问题。它更像是一个持续运行和监视设备的监视解决方案


我真的被困在这一点上了。我会感谢你的帮助

为每个间隔生成一个worker将完成此工作。同样的代码看起来有点像这样:

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()


哪个站台?Linux?如果可能的话,我希望它是独立于平台的,否则在linuxI上,如果它是Linux,我会推荐
collect
。但我认为也有一些与windows兼容的东西#为什么要发明轮子?但是,如果我想用python,比如poller或worker,以定义的轮询间隔轮询设备,并持续运行到永远,那该怎么办?什么是设备?服务器?URL结束点?你能提供一个脚本,让我知道如何做吗?太好了,我明白你的意思,这是一个有效的解决方案。如果我给你一个3分钟、5分钟和10分钟这样的时间间隔的例子,你能说得更清楚些吗?在这种情况下,获取表的poll_interval列中的不同值并将其转换为列表将给你提供
[3,5,7]
。您可以遍历该列表,为每个间隔生成一个worker。