【问题标题】:how to handle message in on_message mqtt paho if multiple message came at same time如果多条消息同时出现,如何处理 on_message mqtt paho 中的消息
【发布时间】:2021-08-25 05:07:11
【问题描述】:
return_message = ""

def on_connect(client, userdata, flags, rc):

    print("Connected with result code "+str(rc))
    client.subscribe(topic)

def on_message(client, userdata, message):
   global return_message
   print("received data is :")  
   return_message = message.payload

client = mqtt.Client("user") 
client.on_connect=on_connect
client.on_message=on_message
client.connect(broker,port,60)
client.loop_start()

return_message 是一个全局变量。一次只有一条消息时获取消息。但我需要一次处理多条消息。如何处理。如果我将 return_message 声明为一个数组,那么我也认为会有数据丢失。有没有更好的方法来做到这一点。我还需要将返回消息值传递给其他文件。如何做到这一点

【问题讨论】:

  • 每条消息需要采取什么措施?如果您只是想要一种线程安全的方式来存储它们以便另一个线程可以处理,那么请考虑使用Queue
  • 感谢您的支持。我会尝试使用队列

标签: python python-3.x django mqtt paho


【解决方案1】:

所有消息都在客户端网络循环中处理,这意味着默认情况下一次只会处理一条消息,因为只有on_message 的实例会同时运行。

如果您想并行处理消息,可能是因为处理时间很长,那么您需要提供自己的线程池并将消息处理传递给该池。

【讨论】:

  • 感谢您的支持。我已将返回消息声明为数组。然后我将 message.payload 推送到该数组中,现在我想我将获得其中几乎所有的数据
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多