Лучшие практики для реализации чата в Django (хранение онлайн-пользователей) - PullRequest
1 голос
/ 16 ноября 2010

Я внедряю систему чата в Django.

У меня возникли проблемы с решением, как создавать модели, которые решают, кто является онлайн-пользователями.Я вижу две проблемы:

  1. вы не можете точно сказать, когда пользователь отключается
  2. Я хочу, чтобы "пользователи" были легкими (вход в систему не требуется), что означаетЯ не хочу использовать пользовательскую систему Django.

Любые предложения о том, как это сделать?

Ответы [ 2 ]

1 голос
/ 16 ноября 2010

Сохраните эту информацию в своем кэше. Это достаточно эфемерно, что оно не входит в долгосрочную базу данных, и доступ должен быть ДЕЙСТВИТЕЛЬНО быстрым.

Вам не нужно хранить много информации, чтобы иметь дело с сеансом чата, поэтому сохраняйте ее в сеансе пользователя (вы можете сделать это с анонимными, не вошедшими в систему пользователями, а затем извлекать информацию из «реального»). таблица пользователей, если они вошли в систему) - это правильный путь, если вы используете чистый бэкэнд сеанса кэширования и что-то вроде memcached.

0 голосов
/ 16 ноября 2010

Я согласен с ответом Пейла Макмиллана, что использование кэша будет правильным подходом.В прошлом я использовал низкоуровневый API-интерфейс кэширования Django , который просто позволяет централизованно хранить пары ключ-значение.

Я не уверен, насколько это эффективно, но вы могли бы очень просто сохранитьРазделенная запятыми строка идентификаторов пользователей, которые в данный момент находятся в сети:

from django.core.cache import cache

cache.set('users-online', '4,6,12,34')

, а затем:

for user_id in cache.get('users-online').split(','):
    user = User.objects.get(pk=user_id)
    # do something with the user ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...