我被困在一个地区。我在MySQL数据库中几乎没有为不同的轮询间隔设置的设备。例如,我总共有4台设备,其中2台用户希望每5分钟间隔轮询一次,另外2台用户每10分钟轮询一次,而每7分钟应轮询一次。
我想用python构建一个解决方案,该解决方案从数据库中选择这些设备及其轮询间隔,然后开始以其定义的轮询间隔连续轮询这些设备。
由于我无法创建多个轮询脚本(每个脚本一个),因为它将过度利用CPU资源。而且,如果设备数量达到1000个,那么一次轮询所有1000个设备将是一个问题。它更像是一个监视解决方案,可以持续运行并监视设备。
我真的被困在这一点上。多谢您的协助。
答案 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()