在mqtt客户机和代理服务级别之间连接时,将json数据存储在文件中

2024-05-16 21:24:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我有mqtt客户机,它向代理发布一些消息。在

信息如下所示

{
    "message": {
        "body": {
            "software_sub_version": "O", 
            "software_version": 1.25, 
            "hardware_id": 17, 
            "machine_id": 39
        }, 
        "header": {
            "Machine_name": "MY_MACHINE", 
            "message_type": "machine_data", 
            "message_version": "1.0", 
            "publish_time": "2017-02-22T06:44:27.281644+00:00"
        }
    }
}

在发布消息时,我检查是否存在与代理的连接,如果没有,则使用以下代码将消息存储到文件中。在

^{pr2}$

我还需要将存储的消息一个一个地发送给代理。在

while True:
    if stored_msg_present:
         send_stored_msg_to_broker()

最好的方法是什么。 像tinydb这样的数据库很好用。 但我无法从tinydb数据库中检索元素。在


Tags: 信息id数据库消息代理message客户机version
1条回答
网友
1楼 · 发布于 2024-05-16 21:24:16

保存到数据库或文件或只是保存在内存中取决于您和您的环境。在

如果连接很少连接,并且通常断开很长时间,那么保存到数据库或文件更容易节省内存。但是如果你的信息少了,你还是可以把它保存在内存中。(例如队列或列表)

如果连接非常稳定并且很少断开连接,并且会在短时间内恢复(例如几秒钟),那么保存到内存可能不是一个坏选择。但是如果你的信息增长很快(例如每秒数千条信息),那么把它们全部保存在内存中可能不是一个好的选择。在

比较文件和数据库,如果你要保存大量的数据,可以用多线程编程来访问它们,或者需要查询它们来选择先上传哪一个,那么数据库就更容易处理了。如果您的数据简单且较少,则可以使用文件更容易地处理它们。在

环境是另一个考虑因素,如果你使用一些低质量的芯片,也许你应该考虑它们的性能或稳定性。(例如内存不足或磁盘已满)

最后是数据的重要性。如果你的内存和磁盘很短,那么丢失一些数据并不是很重要,也许你可以直接丢弃它们,省去处理它们的精力。一切由你决定。在

相关问题 更多 >