@wawa

Как работает Django channels?

Разбираюсь с channels.
Читаю официальный тутор https://channels.readthedocs.io/en/latest/tutorial...
Как я понял один инстанс Consumer крутится в своем отдельном процессе/воркере и обслуживает одного клиента на протяжении всего времени соединения.
Т.е. 1 процесс == 1 Consumer() == 1 Connection == 1 клиент.
Если это так, то если я создам 10 воркеров (предполагается, что их много не должно быть, как я понял), то чатом пользоваться смогут только 10 человек одновременно.
Ну тогда грош цена всей этой технологии.
Очевидно в чем-то я ошибаюсь.
Что я упускаю?

В документации каналов опущен (либо размазан по всей доке) контекст работы всей этой системы. Я имею в виду контекст ОС. Можете объяснить как это работает оперируя такими сущностями как сокет, соединение, epool, процесс, тред, RAM? Буду очень благодарен.
  • Вопрос задан
  • 885 просмотров
Пригласить эксперта
Ответы на вопрос 2
@deliro
Ну тогда грош цена всей этой технологии.

А, ну простите, закрываем проект.

Т.е. 1 процесс == 1 Consumer() == 1 Connection == 1 клиент.

С чего ты взял, что на каждый процесс приходится по одному consumer? На каждое соединение создаётся инстанс consumer'а, да. Да, он живёт всё время, пока поддерживается соединение. Но 1 воркер может поддерживать тысячи таких соединений. Как — читай про asyncio или исходники channels.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы