Не удается вызвать message.topic в клиенте MQTT? - PullRequest
0 голосов
/ 18 января 2019

У меня есть проблема, когда мой метод on_message перестает работать правильно, когда я вызываю msg.topic. Я не получаю сообщение об ошибке, но операторы print больше не выполняются, хотя отправляются новые сообщения.

В чем проблема?

import paho.mqtt.client as client

hostname = 'iot.eclipse.org'
topic = 'Mein/Topic'

def on_message(client, userdata, msg):
    msg = msg.payload.decode()
    print("topic:", msg.topic)
    print("Received Message:      {}".format(msg))

def on_connect(client, userdata, flags, rc):
    print("Connection returned result: " + str(rc) +
          "\n")
    if rc == 0:
        print("Listening now.\n")
    client.subscribe(topic)

client = client.Client()
client.on_message = on_message
client.on_connect = on_connect
client.connect(hostname)
client.loop_forever()

1 Ответ

0 голосов
/ 19 января 2019

Paho-клиент имеет встроенный блок try / wait, который оборачивает вызов в on_message, чтобы предотвратить сбой сетевого потока из-за плохого поведения обратных вызовов.

Если вы хотите узнать, где происходит сбой вашего кода, вы можете добавить свою собственную попытку / ожидание внутрь функции on_message, чтобы показать проблему. Что-то вроде:

def on_message(client, userdata, msg):
    try:
        msg = msg.payload.decode()
        print("topic:", msg.topic)
        print("Received Message:      {}".format(msg))
    expect Exception, e:
        print(e)
...