nnnLik
@nnnLik
Capybara god

Какие есть способы хранения вебсокет соединений?

Пишу чатик. Думал о том где хранить пул соединений и изначально хотел чтобы соединения были в редисе, а когда начал реализовывать это столкнулся с проблемой что чтобы поместить обьект вебсокета в редис его надо сначала каким-то образом сериализовать, что логично. Во всех примерах я вижу что люди пишут следюущим образом.

Создают мапу и помещают туда сам обьект вебсокета

class ConnectionManager:
    def __init__(self):
        self.active_connections: list[WebSocket] = []


но в таком случае это не выглядит так будто бы это можно маштабировать. Конечно вертикально можно, но это не хайпово.

Есть ли какие то другие способы хранить соединения? Может все же можно как то хранить в редисе соединения?
  • Вопрос задан
  • 256 просмотров
Решения вопроса 1
@Everything_is_bad
Ты не можешь сериализовать "пул вебсокет соединений". Если он сделан в рамках приложения, то он там будет жить весь лайфтайм этого приложения. А "чтобы соединения были в редисе" это значит что ты пул изначально сделал через pub/sub в redis.
Другое дело, что ты можешь поднять несколько инстансов (как отдельные процессы, так и отдельные сервера), и сделать либо маршрутизацию по ним, либо возможным обмен между ними, вот и всё масштабирование.
ЗЫ про "pub/sub в redis." чуток не то написал, это не пул в нем сделан, а про коммуникацию для инстансов.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
mayton2019
@mayton2019
Bigdata Engineer
Сокеты невозможно сериализовать. Придумай другую термиологию или другую идею.

Возможно ты хотел что-то другое?
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы