loop_forever() 和 loop_start() 未连接到 Python 3 中的代理

问题描述 投票:0回答:0

我正在制作一个 Python 程序来将 MQTT 客户端连接到 HiveMQ。无论何时,我都尝试使用 loop_start() 它与 loop_forever() 相同的代理连接和断开连接。我试图在一个新线程上运行它,但它没有用。

我正在使用以下东西:

Ubuntu Python 3.10 Paho-MQTT - 来自 GitHub 的最新版本。

这是我的python代码

    # Import dependencies
    from threading import Thread
    from utils import SysConfig, SysLogger
    from mqtt.client import Client, MQTTv5, ssl
    
    # Utilities
    sys_config = SysConfig(False)
    sys_logger = SysLogger()
    
    
    # Get credentials
    HOST = sys_config.read_value('mqtt', 'host')
    PORT = sys_config.read_value('mqtt', 'port')
    USERNAME = sys_config.read_value('auth', 'name')
    PASSWORD = "HelloWorld@100"
    
    # Global client
    mqtt_client = Client(client_id=USERNAME, userdata=None, protocol=MQTTv5)
    
    # On connection established
    def on_connect(client, userdata, flags, rc, properties=None):
        isRunning = True
        sys_logger.log_info("Connected to MQTT cloud server")
    
    # On subscribe
    def on_subscribe(client, userdata, mid, granted_qos, properties=None):
        print("Subscribed: " + str(mid) + " " + str(granted_qos))
    
    # On disconnect
    def on_disconnect(client, userdata, flags, rc, properties=None):
        sys_logger.log_info("Disconnected to server")
    
    # Define callbacks
    mqtt_client.on_connect = on_connect
    mqtt_client.on_subscribe = on_subscribe
    mqtt_client.on_disconnect = on_disconnect
    
    try:
        sys_logger.log_info("Starting MQTT server")
        mqtt_client.tls_set(tls_version=ssl.PROTOCOL_TLS)
        mqtt_client.username_pw_set(USERNAME, PASSWORD)
        mqtt_client.connect(host=HOST, port=int(PORT))
    
        while True:
            mqtt_client.loop_start()
    
    except Exception as sys_error:
        sys_logger.log_error(f"Failed to start MQTT server. System returned {str(sys_error)}")

请帮帮我 提前致谢。

python python-3.x multithreading loops mqtt
© www.soinside.com 2019 - 2024. All rights reserved.