Paho-подписчик on_message - функция обратного вызова, перемещающаяся в отдельный файл - PullRequest
0 голосов
/ 07 апреля 2020

Класси c - стандартный код работает отлично:

import paho.mqtt.client as mqtt

def on_connect(client, userdata, flags, rc):
    print("Connected with result code "+str(rc))
    client.subscribe("$SYS/#")

def on_message(client, userdata, msg):
    print(msg.topic+" "+str(msg.payload))

client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message

client.connect("mqtt.eclipse.org", 1883, 60)

client.loop_forever()

Теперь я хочу переместить функцию обратного вызова on_message в новый файл, но это не работает? Не работает значит, MQTT сообщения не распознаются? Функция "on_message" не исключена. Есть идеи почему?

import paho.mqtt.client as mqtt
from new_file import on_message

def on_connect(client, userdata, flags, rc):
    print("Connected with result code "+str(rc))
    client.subscribe("$SYS/#")

client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message

client.connect("mqtt.eclipse.org", 1883, 60)

client.loop_forever()

new_file:

def on_message(client, userdata, msg):
    print(msg.topic+" "+str(msg.payload))

1 Ответ

0 голосов
/ 08 апреля 2020

Ошибка не требует пояснений:

% python fails.py   
  File "fails.py", line 2
    import on_message from new_file

, поэтому при изменении

импорт on_message из нового_файла

на

из нового_файла импорт on_message

это работает.

...