Paho订户on_message-回调函数移到单独的文件中

时间:2020-04-07 09:13:31

标签: python mqtt paho

经典标准代码可以完美运行:

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()

新文件:

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

1 个答案:

答案 0 :(得分:0)

错误是不言自明的:

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

因此,如果您更改

从new_file导入on_message

从new_file导入on_message

有效。