【问题标题】:Django shell doesn't respect cache configurationDjango shell 不尊重缓存配置
【发布时间】:2013-10-01 08:13:03
【问题描述】:

在我的 settings.py 我有:

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
        'LOCATION': 'ws_cache_table',
        'TIMEOUT': '3000000',
        'OPTIONS': {
            'MAX_ENTRIES': 10000000
        }
    }
}

但如果我在python manage.py shell 中这样做:

from django.core.cache import cache
print type(cache)

我明白了:

django.core.cache.backends.locmem.LocMemCache

为什么!??? 现在我无法清除我的缓存...

为了证明我的配置是正确的,我可以这样做:

from django.conf import settings
conf = settings.CACHES.get('default', None)

我得到:

{'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
 'LOCATION': 'ws_cache_table',
 'OPTIONS': {'MAX_ENTRIES': 10000000},
 'TIMEOUT': '3000000'}

看起来get_cache 方法在定义 CACHES 之前被调用...

【问题讨论】:

  • 您可能从设置中可访问的代码访问django.core.cache.cache?
  • 哪个 Django 版本?
  • 您确定没有其他“本地”设置正在替换CACHES 设置吗?如果你手动调用django.core.cache.get_cache('default'),你会得到什么?
  • @kroolik - 我不明白,你能解释一下吗?
  • @brunodesthuilliers - 1.4

标签: python django caching django-cache django-caching


【解决方案1】:

首先您应该记住,您的local_settings.py 会覆盖settings.py。

然后你应该注意作为后端运行的缓存守护进程,因为有不同的,并且根据你运行的内容,你需要相应的指定选项。

例如对于 memcached,local_settings.py 将显示:

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
        'LOCATION': '127.0.0.1:11211'
        'CACHE_TIME': '3600',
    }
}

而对于 locmem:

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'
        'LOCATION': '127.0.0.1:11211'
        'TIMEOUT': 3600'
    }
}

【讨论】:

    猜你喜欢
    • 2019-03-10
    • 1970-01-01
    • 2016-04-26
    • 2013-06-05
    • 2021-07-21
    • 2017-01-10
    • 1970-01-01
    • 2018-05-28
    • 1970-01-01
    相关资源
    最近更新 更多