Как отличить неактивность пользователя от непрерывного http-запроса в django?
Я хотел бы выходить из сессии, если пользователь не проявляет никакой активности в веб-приложении. В настоящее время я реализовал пользовательское промежуточное ПО для выхода из сеанса в течение настроенного интервала времени.
В моем приложении необходимо выполнять непрерывный опрос каждые 2 секунды. Но в моем пользовательском промежуточном классе "def process_request(self, request)" вызывается каждый раз, когда выполняется опрос.
Таким образом, сессия никогда не выходит из системы, поскольку этот опрос также рассматривается как активность пользователя.
Теперь, как мне отличить бездействие пользователя от опроса?
Код:
from django.utils.deprecation import MiddlewareMixin
from django.contrib.auth import logout from django.contrib import messages из datetime import datetime, timedelta from django.contrib import auth
from django.conf import settings
class CustomMiddleware(MiddlewareMixin): def process_request(self, request): if not request.user.is_authenticated : #Невозможно выйти, если пользователь не вошел в систему return
try:
if datetime.now() - request.session['last_touch'] > timedelta( 0, settings.AUTO_LOGOUT_DELAY * 60, 0):
auth.logout(request)
del request.session['last_touch']
return
except KeyError:
pass
request.session['last_touch'] = datetime.now()
settings.py:
SESSION_SERIALIZER = 'django.contrib.sessions.serializers.PickleSerializer' AUTO_LOGOUT_DELAY = 1