LINUX.ORG.RU

Сделай в таблице (лучше в каком-нибудь in-memory хранилище) поле ¨последнее посещение¨. При каждом запросе обновляй записывай туда текущее время. Список пользователей, у которых значение этого поля отличается от текущего времени меньше чем на N секунд = список пользователей онлайн.

Можно ещё какие-нибудь вебсокеты заюзать.

theNamelessOne ★★★★★
()
Последнее исправление: theNamelessOne (всего исправлений: 2)
Ответ на: комментарий от eth0eth1

Нет.
Если хочешь — могу тебе сделать коробку, €50 за срочность или закинь тикет в https://bitbucket.org/mlug/ninamori/issues и однажды я его прикручу к Нинамори (скорее всего ближе к концу лета такие фичи пойдут) и можешь взять его на условиях GNU AGPL v3 бесплатно.

Или можешь нагуглить готовые сниппеты и сам прикрутить что надо, работы там на час.
Но если ты в джанге не шаришь на таком уровне чтобы прикручивать сниппеты из интернета — лучше сначала прошарься получше.

Goury ★★★★★
()
Ответ на: комментарий от eth0eth1

Django не знаю, но сомневаюсь, что есть, слишком уж специфическая хотелка.

theNamelessOne ★★★★★
()
Ответ на: комментарий от eth0eth1

Записывать последние визиты в какое-нибудь нереляционное хранилище и дёргать оттуда сводку за нужный период времени.
Я бы взял Redis для крупного проекта или через Django cache складывал бы в memcached для не очень крупного.

Но если юзеров и правда не много, то просто записывать в базу данных последний визит и потом делать выборку — нормальный вариант.

Goury ★★★★★
()
Ответ на: комментарий от forkhammer

This library is compatible with:
python2.6, django1.4
python2.6, django1.5
python2.6, django1.6
python2.7, django1.4
python2.7, django1.5
python2.7, django1.6
python3.3, django1.5
python3.3, django1.6

Latest commit on 7 Nov 2013

Сомнительно. Хотя если нормально накодено, то ломаться там нечему.

Goury ★★★★★
()
Последнее исправление: Goury (всего исправлений: 1)
17 августа 2016 г.
Ответ на: Модуль для django,пользователи онлайн от anonymous

Теперь опубликуй его нормально и будет хорошо.
Но вообще вот такое:

if now > cache.get('seen_%s' % item.username) + datetime.timedelta(seconds =settings.USER_TIMEOUT):
	pass
else:
	online = [[count, item,item.username, cache.get('ip_%s' % item.username)]]
	count += 1
печалит.

А вот это:
else:
	pass
вызывает недоумение.

И не понятно зачем у тебя в urls и views табы, а в middleware пробелы.

Goury ★★★★★
()
Последнее исправление: Goury (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.