Скрипт Python для мониторинга устройств - PullRequest
0 голосов
/ 04 февраля 2019

Я застрял в одной области.У меня есть несколько устройств в базе данных MySQL, для которых установлены разные интервалы опроса.Например, всего у меня есть 4 устройства, 2 из которых пользователь хочет опрашивать каждые 5 минут, два других - по 10 минут, а одно следует опрашивать каждые 7 минут.

Я хочу построить однорешение на python, которое выбирает эти устройства из базы данных и их интервалы опроса, а затем начинает опрашивать эти устройства в определенный интервал опроса непрерывно.

Поскольку я не могу создать несколько скриптов опроса (по одному для каждого), так как это будетчрезмерно использованные ресурсы процессора.И если количество устройств достигло 1000, тогда будет проблемой опросить все 1000 одновременно.Это больше похоже на решение для мониторинга, которое продолжает работать и контролировать устройства.

Я действительно застрял в этой точке.Я буду признателен за вашу помощь с этим.

1 Ответ

0 голосов
/ 04 февраля 2019

Генерация работника для каждого интервала сделает работу.Код для того же самого будет выглядеть примерно так:

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

...