我有一个想实时进行的基于Django的项目,因此想到了Django通道。但是,我仍然不确定这是否是应用Django通道的正确项目,以及我应该应用它的项目的哪一部分。

我有一堆传感器不断读取数据并将其保存/更新到后端的数据库中。然后,来自数据库的数据将传递到前端,并显示在网页上。

数据流:传感器>网关>数据库>后端>前端

我已经实现了Django信号,可以连续监听后端的数据库上的所有更新,以便对前端的用户执行一些通知功能。

我的问题

1)在这个例子中,我应该在哪里实现Django通道?


从传感器到网关
从网关到数据库
从数据库到后端
从后端到前端
上述所有的


2)Django信号与Django通道-重叠吗?

侦听数据库中的更新时,感觉就像Django信号正在实时完成工作。当它通知我有更新时,我只需调用我的代码即可执行一些我希望它执行的通知。这不是已经实时了吗?我还是应该在这里使用Django通道?

预先感谢您的任何帮助!

最佳答案

我已经用Django实现了类似的东西。这里要点:


传感器使用REST API(使用DRF)将新数据发送到Django;
Django处理数据。使用Celery而不是使用信号可以进行大量计算,从而快速关闭与客户端的连接;
然后,Celery使用处理后的数据更新数据库,并使用Channels通知前端客户端。


与前端的WebSockets一起使用时,通道效果最好。刚开始时可能很难建立完整的生产设置,但最终结果通常对于以现代交互方式(即:无页面刷新)的实时浏览器内通知来说非常好。

10-08 08:09
查看更多