【问题标题】:Sessions on Memcached in Django , the cache expire time allways 300s when i set SESSION_COOKIE_AGE = 0Django 中 Memcached 上的会话,当我设置 SESSION_COOKIE_AGE = 0 时,缓存过期时间总是 300 秒
【发布时间】:2014-08-18 00:19:38
【问题描述】:

我的 Django Settings.py 是这样的:

CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.PyLibMCCache',
        #'LOCATION': os.environ['MEMCACHED']
        'LOCATION': "127.0.0.1",
         #"BINARY" : True,
    },
}
SESSION_SAVE_EVERY_REQUEST = True
SESSION_ENGINE = 'django.contrib.sessions.backends.cache'
SESSION_EXPIRE_AT_BROWSER_CLOSE = True
SESSION_COOKIE_AGE = 0 

我将会话存储在 memcached 上。 但是,缓存过期时间总是300s!!

作为 django 文档,他们说 SESSION_COOKIE_AGE = 0 意味着永远不会超时,但它没有用于缓存超时?

那么,现在我想让会话缓存在浏览器关闭之前永远不会超时?

不要告诉我只设置SESSION_EXPIRE_AT_BROWSER_CLOSE,因为我将会话存储在memcached中,缓存也有过期时间。我希望缓存永不过期。

谢谢。

【问题讨论】:

  • 没人能回答我吗?

标签: python django session caching python-memcached


【解决方案1】:

我找到原因了!

Settings.py中有CACHES。当你使用memcached存储会话时,设置SESSION_COOKIE_AGE=0。 Django 将为每个缓存使用默认的超时时间(300 秒)。

如果你想设置缓存永远不会超时,你需要将TIMEOUT=0添加到CACHES

【讨论】:

  • 您可以将 TIMEOUT 设置为 None,以便默认情况下缓存键永不过期。值 0 会导致键立即过期(实际上是“不缓存”)。
【解决方案2】:

编辑:我从 2006 年发现这篇帖子 https://groups.google.com/forum/#!topic/django-users/oLZTAAA6wVE 尝试将此设置放入您应用的 settings.py 中。

我认为您可以将到期时间设置得很远(例如 2050 年),它应该可以工作。试试吧,谁知道呢:p。

【讨论】:

    猜你喜欢
    • 2014-09-02
    • 1970-01-01
    • 1970-01-01
    • 2016-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-17
    • 2013-05-10
    相关资源
    最近更新 更多