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

问题描述 投票:0回答:1

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

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

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

django django-channels
1个回答
0
投票

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

然后所有已订阅这些层组的WS使用者都将收到更改的通知。

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

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

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

这样,您可以订阅数据库中的更改,它还添加了一些其他帮助器功能,以便您可以重复使用项目中可能已有的现有django rest框架代码。

© www.soinside.com 2019 - 2024. All rights reserved.