Django 信号与通道

Django signals vs channels

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

我有一堆传感器不断读取数据,然后 saving/updating 将它们存入后端的数据库中。然后将数据库中的数据传递到前端,显示在网页上。

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

我已经实现了 Django 信号来持续监听后端数据库的任何更新,以便在前端向用户执行一些通知功能。

我的问题

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

2) Django 信号与 Django 通道——重叠?

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

提前感谢您的帮助!

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

  1. 传感器使用 REST API(使用 DRF)向 Django 发送新数据;
  2. Django 处理数据。使用 Celery 来实现繁重的计算,而不是使用信号,以快速关闭与客户端的连接;
  3. 然后 Celery 使用处理后的数据更新数据库,并使用 Channels 通知前端的客户端。

Channels 在前端与 WebSockets 一起使用时效果最佳。一开始可能很难有一个完整的工作生产设置,但最终结果通常非常好,以现代和交互的方式实时浏览器内通知(即:没有页面刷新).