Cache.get возвращает None при использовании Memcache
Хочу использовать Memcache для хранения и получения списка всех пользователей в сети. Я использую консоль для проверки работы кэша и memcache, но не получаю правильного вывода/
Например, когда я запускаю это
$ python manage.py shell
>>> from django.core.cache import cache
>>> cache.set("foo", "bar")
>>> cache.get("foo")
Я не получаю никакого вывода после выполнения cache.get("foo")
. Я ожидаю получить вывод bar
Вот что у меня есть в файле settings.py:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': '127.0.0.1:11211',
}
}
USER_ONLINE_TIMEOUT = 300
USER_LASTSEEN_TIMEOUT = 60 * 60 * 24 * 7
мое промежуточное ПО:
import datetime
from django.core.cache import cache
from django.conf import settings
class ActiveUserMiddleware:
def process_request(self, request):
current_user = request.user
if request.user.is_authenticated():
now = datetime.datetime.now()
cache.set('seen_%s' % (current_user.username), now, settings.USER_LASTSEEN_TIMEOUT)
и models.py:
from signup import settings
...
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
...
def last_seen(self):
return cache.get('seen_%s' % self.user.username)
def online(self):
if self.last_seen():
now = datetime.datetime.now()
if now > self.last_seen() + datetime.timedelta(
seconds=settings.USER_ONLINE_TIMEOUT):
return False
else:
return True
else:
return False