第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

MQTT:無(wú)法同時(shí)在同一個(gè)文件中發(fā)送和接收消息

MQTT:無(wú)法同時(shí)在同一個(gè)文件中發(fā)送和接收消息

嚕嚕噠 2022-11-09 16:47:13
我編寫(xiě)了一個(gè)代碼,可以在同一個(gè) python 文件中進(jìn)行發(fā)布和訂閱。我的目標(biāo)是能夠無(wú)休止地向燈發(fā)送色溫并接收其狀態(tài)(開(kāi)/關(guān)或在線/離線)。但是,當(dāng)我運(yùn)行代碼時(shí),我可以向燈發(fā)送消息,但我什么也沒(méi)收到(請(qǐng)注意,發(fā)布者和訂閱者分別工作得很好)import paho.mqtt.client as mqttimport sysimport timetopic = "testtopic/3" topic_casa = "testtopic/1"def on_connect(client, userdata, flags, rc):    print("Connection to the broker. Result : "+str(rc))    client.subscribe(topic_casa, qos=1)    client.publish(topic, light.circadianLight())def on_message(client, userdata, msg):    Message = str(msg.payload)    print("[MSG RECEBIDA] Topico: "+msg.topic+" / Mensagem: "+Message)def on_publish(client,userdata,result):     client.publish(topic, light.circadianLight())    time.sleep(10)def on_disconnect(client, userdata, rc):    if rc != 0:        print("Unexpected disconnection.")  try:    print("[STATUS] Inicializando MQTT...")    #inicializa MQTT:    client = mqtt.Client()    client.username_pw_set(username, password)    client.on_connect     = on_connect    client.on_message     = on_message    client.on_disconnect  = on_disconnect    client.on_publish = on_publish #with this callback we won't be able to #receive messages    client.connect(Broker, PortaBroker, KeepAliveBroker)    client.loop_forever()except KeyboardInterrupt:    print ("\nCtrl+C pressionado, encerrando aplicacao e saindo...")    sys.exit(0)
查看完整描述

1 回答

?
白衣非少年

TA貢獻(xiàn)1155條經(jīng)驗(yàn) 獲得超0個(gè)贊

問(wèn)題有兩個(gè)方面,首先是您time.sleep(10)on_publish()回調(diào)中調(diào)用。

這會(huì)阻塞 MQTT 客戶(hù)端網(wǎng)絡(luò)循環(huán),因此每次發(fā)布消息時(shí)它都不會(huì)在 10 秒內(nèi)發(fā)送/接收任何消息。

您不應(yīng)在任何 MQTT 客戶(hù)端回調(diào)中執(zhí)行任何阻塞或長(zhǎng)時(shí)間運(yùn)行的任務(wù)。

另一個(gè)問(wèn)題是,如果沒(méi)有睡眠,客戶(hù)端將花費(fèi)所有時(shí)間發(fā)布消息(因?yàn)槊看嗡瓿砂l(fā)布消息時(shí)都會(huì)觸發(fā)on_publish()回調(diào),從而啟動(dòng)另一個(gè)發(fā)布。它永遠(yuǎn)不會(huì)處理傳入的消息。

如果您想定期發(fā)布消息,那么您需要啟動(dòng)一個(gè)單獨(dú)的線程來(lái)執(zhí)行此操作,而不是嘗試在回調(diào)中執(zhí)行此操作。


查看完整回答
反對(duì) 回復(fù) 2022-11-09
  • 1 回答
  • 0 關(guān)注
  • 195 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)