如何在Django渠道中设计一个组,以使24小时的group_expiry时间不会损害我的交流?

时间:2018-09-05 21:11:50

标签: python django websocket django-channels daphne

在我的基础架构中,我拥有大量的RPi设备,这些设备通过websocket连接到我们的Web服务器。理想情况下,websocket连接保持永久打开,并充当服务器可以将信息向下推送到RPi设备,RPi可以将信息发送回服务器的管道。

当RPi设备连接到Channels时,它会基于连接有效负载中的配置加入特定的组。服务器不需要知道连接了哪些设备,因为它使用相同的启发式算法来算法确定组名,以将信息发送到适当的设备(如果存在)。

我要销毁的地方是频道中的group_expiry时间设置为24小时。此外,websocket超时也设置为24小时。我可以处理websocket超时,因为JavaScript代码会根据需要自动尝试重新连接。但是,当群组在24小时后过期时,我的设备将停止通过群组接收通信。

最终结果是,每隔24小时,我必须弹跳一次达芙妮,以便重置并重新创建所有组。恰好24小时后,频道清除了群组,一切再次陷入停顿。

我已经查看了这个问题线程:https://github.com/django/channels/issues/999。我曾考虑过将超时调整得更高,但是我不知道这是否会对基础架构的任何其他部分产生不利影响。群组将始终受到控制,因此,我不相信group_expiry为我做的客房整理工作真的对我有任何好处。

找到一种禁用组有效期的方法是否有不利影响?我是否应该利用一种不同的体系结构方法,例如,将日期连接到组名中,并自动使用当前日期创建组和成员身份,以便这些组可以在不中断通信的情况下过期? (那个人为的例子被认为是愚蠢的)。我想我正在寻找建筑建议。

也许我什至完全走错了路。我想我应该先证明,这确实是组过期超时,通过弄清楚如何将其更改为大约2小时并查看站点是否熄灭,使我丧命。

以下是讨论group_expiry设置的软件包: https://github.com/django/channels_redis

0 个答案:

没有答案