【问题标题】:django session timesout within 10 seconds10秒内django会话超时
【发布时间】:2011-04-11 08:53:59
【问题描述】:

我终于部署了应用程序。在生产和会话超时非常快。
如果我不连续点击链接,它会在 15-20 秒后过期

这在 Dev 中不会发生。但是设置又完全不同了。

这是我在生产中的设置 - nginx + apache (wsgi) + django 1.1.2
后端是mysql。

nginx 中的 keepalive 是“keepalive_timeout 15;”,但文档说它与 nginx 启动的进程无关。

settings.py中存在以下内容 -

`TEMPLATE_CONTEXT_PROCESSORS = (`  
    `'django.core.context_processors.auth',`   
    `'django.core.context_processors.debug',`   
    `'django.core.context_processors.i18n',`   
    `'django.core.context_processors.media',`   
    `'django.core.context_processors.request',`   
    `'myown.custom_settings_context_processor.myown_custom_settings',`   
    `)`   

`SESSION_ENGINE = (`   
        `'django.contrib.sessions.backends.cache'`   
`)`   

`INSTALLED_APPS = (`   
    `'django.contrib.auth',`   
    `'django.contrib.contenttypes',`   
    `'django.contrib.sessions',`   
    `'django.contrib.sites',`   
    `'django.contrib.admin',`   
`)`

如果有更多信息。是必需的,请告诉我,我会放上去的。 任何关于为什么会发生这种情况的指示,不胜感激。

【问题讨论】:

  • 我观察到“sessionid”cookie,我看到值不断变化。意思是,在我继续点击链接之前只有一个 cookie,当会话突然到期时,会有一个不同的 cookie。我还看到其他 4 个 cookie - __utma、__utmb、__utmc 和 __utmz
  • 我想我搞定了!!我看到我正在检查用户是否以这种方式登录——如果 request.user.is_authenticated(): 这随机失败。所以问题可能不是会话,而是 request.user 返回 AnonymousUser。
  • 即使启用了 cookie,我仍不断收到管理员提示“看起来您的浏览器未配置为接受 cookie。”
  • 您的缓存到期时间设置为多少?您的会话 cookie 年龄设置为多少?
  • cookie 年龄设置为默认值。我发现是 2 周并正确显示。问题是我没有正确设置缓存系统,因此它在 prod 中很快超时。暂时禁用它。

标签: django apache session mod-wsgi session-timeout


【解决方案1】:

感谢 django 团队的 Anil。
似乎我没有正确配置缓存。
通过在我的 settings.py 中评论这些行进入默认缓存,一切都像魅力一样!!!!

SESSION_ENGINE = (
'django.contrib.sessions.backends.cache'
)

感谢 Anil 和 BrianHV

【讨论】:

    猜你喜欢
    • 2012-04-08
    • 2013-06-15
    • 1970-01-01
    • 1970-01-01
    • 2014-10-24
    • 2016-09-15
    • 2015-02-07
    • 2017-10-19
    • 2011-04-12
    相关资源
    最近更新 更多