Почему MQTT не подключается к серверу?
Моя цель - добиться публикации MQTT сообщения по сигналу postsave, отправленному моим моделям DJango. Я зарегистрировал обратные вызовы on_connect, on disconnect, on_publish для проверки выполнения соответствующего процесса. Однако ни один из зарегистрированных мною обратных вызовов не работает. Вот мой код сигнала post_save. Может ли кто-нибудь подсказать мне, где я делаю ошибку?
import paho.mqtt.client as mqtt
def on_connect(client, userdata, flags, rc):
print("connecting")
print("client:"+str(client))
print("userdata:"+str(userdata))
print("flags:"+str(flags))
print("result:"+str(rc))
global flag_connected
flag_connected=1
def on_publish(client, userdata, mid):
print("message published")
def on_connect_fail(client, userdata, flags, rc):
print("failed to connect")
print("client:"+str(client))
print("userdata:"+str(userdata))
print("flags:"+str(flags))
print("result:"+str(rc))
global flag_connected
flag_connected=0
def on_disconnect(client, userdata, rc):
global flag_connected
flag_connected = 0
def notify_windowsApp(sender,instance, **kwargs):
new_truck_registered={
"identity":str(instance.truck_identity),
"doorName":str(instance.registered_door.door_name),
"doorNumber":str(instance.registered_door.door_number),
"entryTag":str(instance.entry_tag),
#"depatureTag":str(instance.departure_tag),
"entrytime":instance.entry_time.strftime('%Y-%m-%d::%H-%M'),
}
sendToClient(new_truck_registered)
def sendToClient(payloadTobeSent):
client=mqtt.Client(client_id="django_post_save_signal",
clean_session=True, )
mqttBroker="broker.hivemq.com"
client.on_connect=on_connect
client.on_publish=on_publish
client.on_connect_fail=on_connect_fail
client.on_disconnect=on_disconnect
client.connect(mqttBroker)
client.publish('baydoor/truckentrance',payload=str(payloadTobeSent),qos=1, retain=True)
Во-первых, в on_connect_faildocs нет обратного вызова , откуда вы это взяли?
Более того, вы не запустили клиентский сетевой цикл, поэтому ни один из обратных вызовов никогда не будет вызван.