Я разрабатываю подписчика MQTT с paho.mqtt на python.Учитывая список тем, мне нужно запустить подписчика для каждой в отдельном потоке или процессе.Мой код работает хорошо, когда я запускаю подписчиков в главном потоке, но если я делаю это в потоке, обратный вызов никогда не вызывается.
import paho.mqtt.client as mqtt
import time
import threading
class MQTTSubscriber():
def __init__(self, mqtt_server, mqtt_topic):
self.__mqtt_server = mqtt_server
self.__mqtt_topic = mqtt_topic
def __on_message(self, client, userdata, message):
payload = message.payload.decode("utf-8")
print(payload)
def start(self):
self.__client = mqtt.Client("MQTTClient")
self.__client.on_message = self.__on_message
self.__client.connect(self.__mqtt_server)
print("Subscribing to topic " + str(self.__mqtt_topic))
self.__client.subscribe(self.__mqtt_topic)
self.__client.loop_forever()
И это моя основная программа:
topics = ["topic1", "topic2"]
for topic in topics:
mqttSubscriber = MQTTSubscriber("10.0.1.174", topic)
# mqttSubscriber.start()
thread = threading.Thread(target = mqttSubscriber.start)
thread.setDaemon(True)
thread.start()
while True:
pass
Есть идеи, что происходит?