我目前正在处理一个Raspberry Pi / Django项目,该项目比我以前所遇到的更为复杂。 (我要么做本地树莓派项目,要么做简单的Django网站;决不要将两者结合!)
这个想法是两个有两个Raspberry Pi的收集信息,这些信息运行一个本地Python脚本,每个信息都将使用图像处理从一个HDMI提要中输入(我已经弄清楚了所有内容-我认为)。现在,我希望这两个Raspberry Pi(彼此不交谈)连接到后端服务器,该服务器将合并,存储(和处理)我的两个Pis收集的信息
我希望每个Pi每秒处理一帧,并将其与之前一秒的帧(他正在寻找的只有几处不同)进行比较,以隔离任何新事件,并将其发送到服务器。因此,我希望每秒不超过十二个带有时间戳的二进制数据点。
现在在这里做什么聪明的方法是?
基本上,我是在咨询有关创建基于IOT的项目的建议,在该项目中,传感器会收集大量信息,并希望将其发送到后端服务器进行处理,以及应如何设计归档过程。
PS:我希望图像处理部分(以1 fps)在我的Pi Zero上足够快(因为它非常简单);该级别的待办事项应该不是问题。
PPS:我使用的是django后端(即使看起来有些过分了) a /因为我已经非常了解框架 b /,因为我希望使用django从收集的合并数据点中建立实时性能指标,并(几乎)实时在网页上实时显示它们。
非常感谢您!
答案 0 :(得分:2)
这部分取决于您需要的弹性。如果您真的无法承受一次更新丢失的损失,我会考虑使用诸如RabbitMQ之类的消息队列-客户端会将事情直接添加到队列中,而服务器会依次将它们弹出,而无需介入根本没有HTTP请求。
否则,仅以某种序列化格式(即JSON)发布每个帧的数据会容易得多,而Django将简单地反序列化并遍历列表,将每个条目保存到db。这应该足够快,足以满足您描述的速率-我希望保存十几个数据库条目所花费的时间大大少于半秒-但这仍然存在问题,如果事情挂了,该怎么办由于某种原因。在服务器上设置超短超时将有所帮助,这将使数据保持发布状态,直到您确认数据已保存为止-并且在客户端中创建唯一ID以确保请求是幂等的。