【发布时间】:2021-07-11 14:15:39
【问题描述】:
我维护了一个 Django Channels v1 应用程序,其中六个消费者通过一个 WebSocket 连接多路复用。我正在升级到 Django Channels v2,不再支持连接(解)多路复用;见GitHub Issue #825 - (Re)Implement Multiplexing。如果我想复用,我可以使用channels-demultiplexer,channelsmultiplexer,或者自己写。我倾向于重新实现多路复用,因为我认为这需要更改我们现有代码的更少。
在此之前,我正在做一些尽职调查,以确定多路复用是否甚至是一项重要的优化。
鉴于 Redis 支持的 Django 2 + Channels 2 应用程序在 Nginx 后面的负载平衡环境中使用 Daphne(目前主要计划SyncConsumers)和 Gunicorn,我认为将 websocket 连接数增加 3x-5x 只会微不足道地增加Redis RAM、应用服务器 RAM 和 Daphne CPU,而且浏览器 RAM 和 CPU 的增加也可以忽略不计,但这只是一个有根据的猜测。
- 我应该如何考虑每个额外的 WebSocket 连接 a.) 在 Django Channels v2 和 b.) 在浏览器中的成本?
- 我还没有看到任何设计为在单个页面上使用多个 WebSocket 连接的 Web 应用程序。你?如果是这样,它是高性能的吗?它使用了多少个连接?
- 你会怎么做?
解决相邻但不同问题的 Stack Overflow 帖子:
【问题讨论】: