这是我的python客户端代码,用于发布10个发布者的消息,我希望每个发布者不按顺序发送多条消息,例如客户端1可以发布一条消息,然后客户端5,然后客户端1可以再次发送另一条消息,然后客户端9,依此类推
import paho.mqtt.client as mqtt
import time
import os
import random
#variables
MQTT_HOST = "127.0.0.1"
MQTT_PORT = 1883
MQTT_KEEPALIVE_INTERVAL = 5
MQTT_TOPIC = "sampleTopic"
MQTT_MSG = "Hello MQTT"
publishers = []
num_publishers = 10
#Callback Functions
def on_log(client, userdata, level, buf):
print("log: "+buf)
def on_connect(client, userdata, flags, rc):
if rc == 0 :
print("connected OK"+str(client))
mqttc.publish(MQTT_TOPIC,MQTT_MSG)
else:
print("Bad connection returned code = ",rc)
def on_disconnect(client, userdata, flags, rc=0):
print("Disconnected result code " +str(rc))
def on_message(client, userdata, msg):
topic = msg.topic
m_decode = str(msg.payload.decode("utf-8","ignore"))
print("message received", m_decode)
def on_publish(client, userdata, mid):
print("Message Published...")
time.sleep(random.randint(3,9))# sleep for 10 seconds before next call
for i in range(num_publishers):
#Initiate MQTT Client
id = "Publisher "+str(i)
client = mqtt.Client(id)
publishers.append(client)
try:
for mqttc in publishers:
#Binding Callback Functions
mqttc.on_connect = on_connect
mqttc.on_disconnect = on_disconnect
mqttc.on_message = on_message
mqttc.on_publish = on_publish
# mqttc.on_log = on_log
#connect with MQTT broker
mqttc.connect(MQTT_HOST,MQTT_PORT,MQTT_KEEPALIVE_INTERVAL)
#loop network
mqttc.loop_start()
time.sleep(0.5)
while True:
pass
except KeyboardInterrupt:
print("interrupted by keyboard")
os._exit(0)
我尝试了paho.mqtt.publish.multiple(),但它不符合我的要求
目前没有回答
相关问题 更多 >
编程相关推荐