У меня проблема с использованием DatabaseCache в django в представлении. Кажется, я не получаю доступ к кешу базы данных, и сохранение новых значений в кеше не вызывает проблем.
В settings.py Я поставил настройки для кеша:
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
'LOCATION': 'caches',
'TIMEOUT': 300,
}
}
В моем приложении учетных записей В моем views.py :
есть следующее
from rest_framework.response import Response
from rest_framework.decorators import api_view
from accounts.serializers import UserSerializer
from django.core.cache import cache, caches
@api_view(['GET'])
def current_user(request):
print("all caches")
print(caches.all())
cache_value = cache.get("foo")
print("cache_value")
print(cache_value)
cache.set("foo", "some cached value", 24*60*60)
cache_value_after_set = cache.get("foo")
print("cache_value_after_set")
print(cache_value_after_set)
serializer = UserSerializer(request.user)
return Response(serializer.data)
Проблема в том, что кеш, похоже, не "прилипает". При первой попытке сделать cache.get ("foo") он, очевидно, вернет None. И далее, когда я делаю cache.get ("foo") - после того, как я сделал cache.set - он возвращает значение, которое должен. Но когда я вызываю представление во второй раз, cache.get ("foo") возвращает None.
Вывод caches.all () является пустым словарем, поэтому я предполагаю, что настройки кэша в settings.py не используются каким-либо образом в views.py .
Выходные данные после первого и второго вызовов представлений:
all caches
dict_values([])
cache_value
None
cache_value_after_set
some cached value
и
all caches
dict_values([])
cache_value
some cached value
cache_value_after_set
some cached value
т.е. результаты идентичны и кэш не установлен.
Действительно странная вещь заключается в том, что кеш работает при использовании оболочки . / Manage.py , и я могу хранить вещи в базе данных, даже если caches.all () иногда возвращает пустой словарь, а иногда нет. Когда я делаю это, я вижу, что кэши появляются в таблице кэшей в mysql.
Я использую Django 1.11
У вас есть идеи по этому поводу?
Заранее спасибо!