【发布时间】: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