Я поддерживаю приложение Django Channels v1 с шестью потребителями, мультиплексированными через одно соединение WebSocket. Я обновляюсь до Django Channels v2, где (де) мультиплексирование соединений больше не поддерживается; см. Проблема GitHub № 825 - (Повторная) реализация мультиплексирования . Если я хочу мультиплексировать, я могу использовать демультиплексор каналов, channelsmultiplexer, или напишите свой. Я склоняюсь к повторной реализации мультиплексирования, потому что я думаю, что это повлечет за собой меньшее изменение нашего существующего кода.
Перед тем, как сделать это, я провожу некоторую проверку, чтобы выяснить, является ли мультиплексирование даже важной оптимизацией.
Учитывая приложение Django 2 + Channels 2 с поддержкой Redis в среде с балансировкой нагрузки за Nginx с Daphne (в настоящее время планируется в основном SyncConsumers) и Gunicorn, я думаю, что увеличение количества подключений к веб-сокетам в 3–5 раз лишь незначительно увеличит ОЗУ Redis, ОЗУ сервера приложений и ЦП Дафны, а также незначительно увеличит ОЗУ браузера. и ЦП, но это только обоснованное предположение.
- Как мне думать о стоимости каждого дополнительного подключения к WebSocket а.) В каналах Django v2 и б.) В браузере?
- Я не видел веб-приложений, которые были разработаны для использования множества соединений WebSocket на одной странице. У тебя? Если да, то насколько эффективно? Сколько подключений он использовал?
- Что бы вы сделали?
Сообщения Stack Overflow, в которых рассматриваются смежные, но разные вопросы: