会员键:
import paho.mqtt.clIEnt as mqttdef on_message(clIEnt,userdata,msg): print 'Received: ' + msg.payloadclIEnt = mqtt.ClIEnt()clIEnt.on_message = on_messageclIEnt.connect('localhost',1883)clIEnt.subscribe('hello/#')clIEnt.loop_forever()
出版商:
import paho.mqtt.clIEnt as mqttclIEnt = mqtt.ClIEnt()clIEnt.will_set('hello/will','Last will',False)clIEnt.connect('localhost',1883)clIEnt.publish('hello/world','Regular msg',False)clIEnt.disconnect()
输出:
Received: Last will
我应该只收到常规消息,因为我使用clIEnt.disconnect()来关闭连接.如果我评论will_set行,我会收到常规消息.我也尝试在同一主题上发布它们并且它不起作用.
解决方法 您可以尝试使用单一方法只发布一条消息,如下所示:import paho.mqtt.publish as publishpublish.single('hello/world',False,'localhost',1883,'publisher',10,{'topic': 'hello/will','payload': 'Will msg','qos': 0,'retain': False})
https://pypi.python.org/pypi/paho-mqtt#single
我猜想问题是你在发布实际完成之前断开连接,这可能就是你看到遗嘱信息的原因.
编辑 –
当我使用mosquitto_sub -v -t’hello /#’运行你的代码时,我看到了正常的消息和正在传递的意愿.
EDIT2 –
这对我来说很好:
import paho.mqtt.clIEnt as mqttclIEnt = mqtt.ClIEnt()clIEnt.will_set('hello/will',False)clIEnt.loop();clIEnt.disconnect()clIEnt.loop();总结
以上是内存溢出为你收集整理的python – Mosquitto和last will(遗嘱)的问题全部内容,希望文章能够帮你解决python – Mosquitto和last will(遗嘱)的问题所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)