我的理解是,回调排队,但因为我不是100%肯定我写了一对脚本的测试行为。
首先认购和回调:
import paho.mqtt.client as mqtt
from time import sleep
def on_connect(client, userdata, flags, rc):
client.subscribe('callback-test/#')
def test1(client, userdata, message):
print("Test1 start")
sleep(2)
print("Test1 done")
def test2(client, userdata, message):
print("Test2 start")
sleep(2)
print("Test2 done")
def on_log(client, userdata, level, buf):
print(level, buf)
client = mqtt.Client()
client.on_connect = on_connect
client.message_callback_add('callback-test/1', test1)
client.message_callback_add('callback-test/2', test2)
client.on_log = on_log
client.connect("test.mosquitto.org")
client.loop_forever()
这里是送消息来触发这些回调脚本:
import paho.mqtt.client as mqtt
# noinspection PyShadowingNames,PyUnusedLocal,PyUnusedLocal,PyUnusedLocal
def on_connect(client, userdata, flags, rc):
client.publish('callback-test/1', "test1")
client.publish('callback-test/2', "test2")
# noinspection PyShadowingNames,PyUnusedLocal,PyUnusedLocal
def on_log(client, userdata, level, buf):
print(level, buf)
client = mqtt.Client()
client.on_connect = on_connect
client.on_log = on_log
client.connect("test.mosquitto.org")
client.loop_forever()
当您运行这两个脚本的第一个返回:
Test1 start
Test1 done
Test2 start
Test2 done
从这个测试我觉得它很自信,它会自动排队回调。
来源
2017-08-17 06:22:39
blp