Paho MQTT-Client-Verbindungszuverlässigkeit (bei Trennung erneut verbinden)

Was ist die zuverlässigste Methode, um den Python Paho MQTT-Client zu verwenden? Ich möchte in der Lage sein, Verbindungsunterbrechungen aufgrund von WLAN-Ausfällen zu behandeln und weiterhin zu versuchen, die Verbindung wiederherzustellen, bis sie erfolgreich ist.

Was ich habe, ist das Folgende, aber gibt es Best Practices, an die ich mich nicht halte?

import argparse
from time import sleep

import paho.mqtt.client as mqtt


SUB_TOPICS = ("topic/something", "topic/something_else")
RECONNECT_DELAY_SECS = 2


def on_connect(client, userdata, flags, rc):
    print "Connected with result code %s" % rc
    for topic in SUB_TOPICS:
        client.subscribe(topic)

# EDIT: I've removed this function because the library handles
#       reconnection on its own anyway.
# def on_disconnect(client, userdata, rc):
#     print "Disconnected from MQTT server with code: %s" % rc
#     while rc != 0:
#         sleep(RECONNECT_DELAY_SECS)
#         print "Reconnecting..."
#         rc = client.reconnect()


def on_msg(client, userdata, msg):
    print "%s %s" % (msg.topic, msg.payload)


if __name__ == "__main__":
    p = argparse.ArgumentParser()
    p.add_argument("user")
    p.add_argument("password")
    p.add_argument("host")
    p.add_argument("--port", type=int, default=1883)
    args = p.parse_args()

    client = mqtt.Client()
    client.on_connect = on_connect
    client.on_message = on_msg
    client.username_pw_set(args.user, args.password)
    client.connect(args.host, args.port, 60)
    client.loop_start()

    try:
        while True:
            sleep(1)
    except KeyboardInterrupt:
        pass
    finally:
        client.loop_stop()

Antworten auf die Frage(2)

Ihre Antwort auf die Frage