Paho-mqtt 订阅一次性消息

Sco*_*ott 3 python json subscribe mqtt

有没有一种优雅的方法可以从代理中提取一条消息,而无需:

  1. 订阅
  2. 创建一个 on_message()
  3. 收到消息
  4. 取消订阅

我问这个问题是因为我们使用的是具有多个字段的 json 消息。当新数据进来时,我只想更新 json 消息中的特定字段,但不删除其余数据。由于我们有大量这样的 json 主题,我们并不真的希望将它们全部保留在程序内存中(也是为了防止程序必须重新启动)。最重要的是,该程序可以在没有监督的情况下运行数月。

因此,理想情况下,我想将 json 消息发布到 ID 主题,并将保留标志设置为 True。然后,当该 ID 收到新数据时,我会提取有关该主题的信息,更新 json 消息中的特定字段并重新发布到同一主题。

我可以发布示例代码,但我希望有一个我不知道的简单函数。

在此先感谢您的任何建议。

har*_*llb 7

Paho Python 客户端附带了一组帮助类,可以为您执行这种单一类型的模式。

医生在这里

例如,以下连接到代理,订阅主题并在收到有关该主题的第一条消息后返回。

import paho.mqtt.subscribe as subscribe

msg = subscribe.simple("paho/test/simple", hostname="mqtt.eclipse.org")
print("%s %s" % (msg.topic, msg.payload))
Run Code Online (Sandbox Code Playgroud)

以及匹配的发布调用:

import paho.mqtt.publish as publish

publish.single("paho/test/single", "payload", hostname="mqtt.eclipse.org")
Run Code Online (Sandbox Code Playgroud)