Как создать систему ping'а всех устройств в системе?

Пишу backend. Мне необходимо отправлять команды от пользователей на устройство. Однако как мне сделать проверку того, что устройство (это любое устройство, например умная пивоварня) онлайн и желательно, чтобы это было наиболее эффективно.

У меня такой вариант: на python создать socket сервер, к которому по порту, например 49223, будут подключаться устройства. И раз в 5 секунд отправлять им какое-нибудь сообщение. Если ответ пришел, тогда устройство онлайн, если нет, то соответственно устройство не онлайн. В дальнейшем эта информация записывается в базу в столбец is_online. Если я буду использовать систему с socket, то мне будет под каждое устройство выделять поток, не слишком ли это будет тяжело для сервера, если например устройств будет 100 и более?

Использую базу данных clickhouse.

Предложите свои варианты, напишите комментарии, как мне сделать лучше?


Ответы (1 шт):

Автор решения: eri

устройства вешай на mqtt брокер - пусть он держит коннекты. не стоит заниматься лоулевелом если пишешь большую систему.

проверять онлайн надо не по флагу "is_online" а выдавать устроству комманду, на которую оно ответит - я тут.

не критичные задания можно складывать в очередб на том же mqtt. когда устройство вернется - оно выполнит задание.

→ Ссылка