Кеширование в Django, кажется, вызывает проблемы - PullRequest
0 голосов
/ 06 мая 2010

Эй, ребята, я только что реализовал серверную часть Django Cache Local Memory в моем коде, однако, похоже, это вызывает проблемы.

Я получаю следующую ошибку при попытке просмотра сайта (с включенной отладкой):

Traceback (most recent call last):

  File "/usr/lib/python2.6/dist-packages/django/core/servers/basehttp.py", line 279, in run
    self.result = application(self.environ, self.start_response)

  File "/usr/lib/python2.6/dist-packages/django/core/servers/basehttp.py", line 651, in __call__
    return self.application(environ, start_response)

  File "/usr/lib/python2.6/dist-packages/django/core/handlers/wsgi.py", line 245, in __call__
    response = middleware_method(request, response)

  File "/usr/lib/python2.6/dist-packages/django/middleware/cache.py", line 91, in process_response
    patch_response_headers(response, timeout)

  File "/usr/lib/python2.6/dist-packages/django/utils/cache.py", line 112, in patch_response_headers
    response['Expires'] = http_date(time.time() + cache_timeout)

TypeError: unsupported operand type(s) for +: 'float' and 'str'

Я проверил свой код, для кеширования все вроде бы нормально.Например, у меня есть следующее в моем промежуточном программном обеспечении.

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.middleware.cache.UpdateCacheMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.cache.FetchFromCacheMiddleware',
    'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',
)

Мои настройки для кэша:

CACHE_BACKEND = 'locmem://'
CACHE_MIDDLEWARE_SECONDS = '3600'
CACHE_MIDDLEWARE_KEY_PREFIX = 'za'
CACHE_MIDDLEWARE_ANONYMOUS_ONLY = True

И часть моего кода (тег шаблона):

def get_featured_images():
    """
    provides featured images
    """

    cache_key = 'featured_images'
    images = cache.get(cache_key)
    if images is None:        
        images = FeaturedImage.objects.all().filter(enabled=True)[:5]
        cache.set(cache_key, images)


    return {'images': images}

Любая идея, в чем может быть проблема,из сообщения об ошибке ниже, похоже, что есть проблема в cache.py django?

Обновление !!!Установите кеш времени в строку!

Ответы [ 2 ]

4 голосов
/ 06 мая 2010

Вы определили количество секунд для кэширования в виде строки вместо целого числа.Должно быть:

CACHE_MIDDLEWARE_SECONDS = 3600
0 голосов
/ 06 мая 2010

CACHE_MIDDLEWARE_SECONDS должно быть int / float, а не строка:

CACHE_MIDDLEWARE_SECONDS = 3600
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...