Django:使用渠道的实时数据库

时间:2020-04-11 17:09:46

标签: django django-channels

我最近正在研究Django中的频道,从我在所有示例中看到的内容来看,它都用于类似聊天的应用程序。但是我想知道是否可以使用它来推送有关数据库更改的通知。

例如,如果我的“视图”使用者将轮询数据库并在每次将其更改为客户端时推送通知,该怎么办?就像该页面的所有客户端都连接到同一个聊天室,然后等待服务器上的“帖子”一样。

我知道我可以使用Ajax从客户端进行轮询,但是我想知道是否可以使用Django通道来让服务器进行轮询。

1 个答案:

答案 0 :(得分:0)

在您的情况下,如果它只是一个聊天室,则最好不要直接观察数据库,而是在发布/更新消息https://channels.readthedocs.io/en/latest/topics/channel_layers.html时通过通道层发送消息,您可以从Django代码中的任何位置进行操作。

然后,将向已订阅这些层组的所有WS消费者通知更改。

如果您有更复杂的情况,需要观察许多不同的模型:

您不需要轮询数据库(只要对数据库所做的所有更改都是通过Django的ORM进行的。)

这里是一个库https://github.com/hishnash/djangochannelsrestframework,它支持预订数据库中的对象。

通过此操作,您可以订阅db中的更改,它还添加了一些其他帮助器功能,以便您可以重复使用项目中可能已有的django rest框架代码。