Как отличить неактивность пользователя от непрерывного 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

Вернуться на верх