Я использую MQTT, чтобы беспокоить сообщения в моей сети, и у меня есть вопрос о самом чистом способе публикации sh и подписки нескольких сообщений на брокера.
Прежде всего, у меня есть два списка:
request_list = [('sensors/system/temperature', 0),
('sensors/system/gyroscope', 1),
('sensors/system/acceleration', 2)]
, который содержит мои темы, которые я должен опубликовать sh мои сообщения.
Мой второй список определяет сообщения, которые я хочу опубликовать sh и темы, в которых я хочу получить мой ответ (== темы, на которые я должен подписаться, чтобы получить мои ответы).
request_value = ['{"response":"similarity/sensors/system/temperature","duration":"60s"}',
{"response":"similarity/sensors/system/gyroscope","duration":"60s"}',
'{"response":"similarity/sensors/system/acceleration","duration":"60s"}']
Мой брокер для каждого topi c одинаков и определен с HOST = "192.168.137.1" на PORT = "8083".
На данный момент я использую для l oop, чтобы подписаться на один topi c, опубликовать sh мое сообщение и ждать прихода сообщения. Потому что мне приходится ждать каждой подписки и публикации. sh чтобы преуспеть в этом очень много времени. Псевдокод моего текущего кода выглядит следующим образом:
list_measurments = []
for topic in request_list:
client.connect("Broker","Host")
client.loop_start()
client.subscribe("sub_topic")
client.pub("pub_topic","pub_message")
client.callback("append list_measurements")
client.loop_stop() #stop the loop
client.disconnect
Я пытался использовать потоки из моего вопроса здесь , но оказалось, что нормальное использование потоков будет опубликовать sh одно и то же сообщение для многих разных брокеров. Я тоже думал о нескольких подписках .
Если бы кто-нибудь мог дать мне подсказку, каким будет самый чистый и быстрый подход, я был бы очень благодарен.