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