python - MQTT 订阅在多线程中无法正常工作

标签 python python-3.x multithreading mqtt python-multithreading

我有如下代码


    threads = []
    t = threading.Thread(target=Subscribe('username', "password", "topic", "host",port).start)
    t1 = threading.Thread(target=Subscribe('username2', "password2", "topic2", "host",port).start)
    
    threads.append(t)
    threads.append(t1)
    
    for thread in threads:
        thread.start()
    
    for thread in threads:
        thread.join()
我的主题在 中发送数据每 5 分钟。
当我使用上面的代码时,它无法正常工作,有时会发送数据有时不会。
但是当我在没有 的情况下使用一个主题时线程 ,它工作正常,数据每 5 分钟完美一次。
我怎么解决这个问题?我要订阅两个主题同时 .
我正在使用 帕霍 MQTT
我的订阅类是
class Subscribe:

    def __init__(self, username, passowrd, topic, host, port):

        self.username = username
        self.password = passowrd
        self.topic = topic
        self.host = host
        self.port = port
       
      

    def start(self):
        self.mqttc = mqtt.Client(client_id="Python")
        self.connected = False
        self.mqtt_message = ""
        self.mqttc.username_pw_set(self.username, self.password)
        self.mqttc.on_connect = self.on_connect
        self.mqttc.on_message = self.on_message
        self.mqttc.connect(self.host, self.port)
        self.mqttc.loop_forever()

    def on_message(self, client, userdata, message):
        """
        Fetch data when data coming to Broker
        """
        topic = message.topic
        m = json.loads(message.payload.decode("utf-8"))
        print(m)

   


    def on_connect(self, client, userdata, flags, rc):
        if rc == 0:
            print("Connected to broker", self.topic)
            self.mqttc.subscribe(self.topic)
            self.connected = True

        else:
            print("could not connect", self.topic)

最佳答案

我不得不给出两个不同的client_id s 用于 Client 的两个实例它解决了这个问题。

关于python - MQTT 订阅在多线程中无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68753693/

相关文章:

android - Activity 线程结束后, Activity 没有停止

c - FD_SET、FD_CLR ...是原子操作吗?

python - 尝试在 Heroku : Application Error 上启动 django 应用程序

python - 在python中打开和关闭没有文件对象的文件

python - 无法使我的脚本以所需的格式打印输出

python - 如何严格地将 float 转换为整数而不四舍五入?

c++ - 基于 Q3DScatter 的自定义图表,QCustom3DItem 运行缓慢

python - 在discord.py中是否有类似于discord.js中的streamTime的东西?

python - opencv+python+linux+webcam = 无法捕获帧

python-3.x - 如何获取 Networkx 图的边属性列表