我创建了一个基于flask的物联网应用程序,设备通过restapi定期发送数据,数据存储在DB中。你知道吗
我想开发一个通知系统,每当某个特定设备的阈值超过时,就会向移动应用程序发送通知。你知道吗
每个设备的阈值和时间窗口存储在DB中
示例:
如果设备x在过去5分钟内的温度高于30摄氏度,则向用户发送通知。你知道吗
使用Python解决这个问题的最佳方法是什么?你知道吗
目前,我正在使用芹菜节拍和运行工人每1秒读取设备数据和阈值由用户配置的数据库,并根据该值发送通知到应用程序通过PYFCM。你知道吗
从长远来看,我不认为这种方法是可伸缩的。你知道吗
这不是你要问的“python”或“flask”之类的问题。你知道吗
那是建筑的东西。而且,在它之后,这是一个设计的东西。你知道吗
因此,架构上典型的物联网数据是测量值的timeseries,标记了一些属性,以便根据来源、组、口味进行区分。你知道吗
随着时间序列的建立(从设备接收并存储在DB中),您通常希望使用统计方法对其进行处理,以构建一些可供分析的函数。你知道吗
简言之,这就是建筑风格。你知道吗
现在,我们可以假设最好的设计方案是什么。 理想情况下,这应该是一种适合存储时间序列的工具,而且还配备了统计分析工具,在最理想的情况下,还应该配备通知适配器/传输工具(也可以是一堆可以轻松绑定在一起的独立工具)。你知道吗
幸运的是,它们已经存在:查找Timeseries数据库。你知道吗
我个人的偏好是XDB,但也有其他的,比如普罗米修斯,这个最近推出的AWS服务,等等。你知道吗
实际上,所有这些工具都配备了不同类型的统计分析工具(例如,在InfluxDB中,您可以立即使用查询语言进行分析,此外还有一个功能强大的流/批处理处理器,甚至可以超越这些工具)。你知道吗
它们中的大多数还配备了通知仪器(例如,上述流入流处理器具有关于统计事件的内置通知动作)。你知道吗
因此,如果您正在寻找长期/可扩展的解决方案(顺便说一句,预期的规模是多少?)-这是你最好的选择之一。但需要一些努力/重构。你知道吗
当然,你总是可以用你现有的工具来实现它。你知道吗
您的“polling workers”解决方案目前看来还不错,接下来您可以使用特定于您的平台的统计lib(抱歉,不熟悉Python,而且您的DB也不知道-无法给出具体的建议来使用哪个),您就可以了。你知道吗
相关问题 更多 >
编程相关推荐