我有一个想实时进行的基于Django的项目,因此想到了Django通道。但是,我仍然不确定这是否是应用Django通道的正确项目,以及我应该应用它的项目的哪一部分。
我有一堆传感器不断读取数据并将其保存/更新到后端的数据库中。然后,来自数据库的数据将传递到前端,并显示在网页上。
数据流:传感器>网关>数据库>后端>前端
我已经实现了Django信号,可以连续监听后端的数据库上的所有更新,以便对前端的用户执行一些通知功能。
我的问题
1)在这个例子中,我应该在哪里实现Django通道?
从传感器到网关
从网关到数据库
从数据库到后端
从后端到前端
上述所有的
2)Django信号与Django通道-重叠吗?
侦听数据库中的更新时,感觉就像Django信号正在实时完成工作。当它通知我有更新时,我只需调用我的代码即可执行一些我希望它执行的通知。这不是已经实时了吗?我还是应该在这里使用Django通道?
预先感谢您的任何帮助!
最佳答案
我已经用Django实现了类似的东西。这里要点:
传感器使用REST API(使用DRF)将新数据发送到Django;
Django处理数据。使用Celery而不是使用信号可以进行大量计算,从而快速关闭与客户端的连接;
然后,Celery使用处理后的数据更新数据库,并使用Channels通知前端客户端。
与前端的WebSockets一起使用时,通道效果最好。刚开始时可能很难建立完整的生产设置,但最终结果通常对于以现代交互方式(即:无页面刷新)的实时浏览器内通知来说非常好。