"监控设备的Python脚本"

2024-04-27 03:03:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我被困在一个地方。我在MySQL数据库中很少有设备设置了不同的轮询间隔。举个例子,总共有4台设备,其中2台用户希望每隔5分钟进行一次轮询,另外两台每隔10分钟轮询一次,还有一台应该每7分钟轮询一次。在

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

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

我真的在这一点上卡住了。谢谢你的帮助。在


Tags: 用户脚本数据库利用数量间隔定义地方
1条回答
网友
1楼 · 发布于 2024-04-27 03:03:46

为每个间隔生成一个工作线程就可以完成这项工作。同样的代码看起来有点像这样:

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

相关问题 更多 >