У меня есть вопрос о настройке кэша с memcached в проекте django.
в файле settings.py, который у меня есть:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': '127.0.0.1:11211',
'TIMEOUT': 120
}
}
он работает, но по умолчанию session_engine вdjango - это django.contrib.sessions.backends.db , но когда я изменяю настройку на django.contrib.sessions.backends.cache , у меня естьследующая ошибка:
The request's session was deleted before the request completed
Я использую версию django django 1.11
Я искал в сообществе похожие вопросы, но не смог найти решение
Когда я использую параметр: django.contrib.sessions.backends.cached_db , он работает, но затем снова использует таблицу в базе данных, если я правильно понимаю.
Еще одна ошибка, которую я получаю:
The request's session was deleted before the request completed.
The user may have logged out in a concurrent request, for example.
Хорошо, чтобы ответить на мой вопрос (методом проб и ошибок):
Из документов Django https://docs.djangoproject.com/en/2.1/topics/http/sessions/
Set SESSION_ENGINE to "django.contrib.sessions.backends.cache" for a
simple caching session store. Session data will be stored directly in your
cache. However, session data may not be persistent: cached data can be
evicted if the cache fills up or if the cache server is restarted.
For persistent, cached data, set SESSION_ENGINE to
"django.contrib.sessions.backends.cached_db". This uses a write-through
cache – every write to the cache will also be written to the database.
Session reads only use the database if the data is not already in the
cache.
итоговые настройки для memcached, которые я использую:
SESSION_ENGINE = "django.contrib.sessions.backends.cached_db"
SESSION_CACHE_ALIAS = "default"
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': '127.0.0.1:11211',
'TIMEOUT': 120
}
}