我正在开发一个Django 1.2.3项目,我发现管理员会话在登录后大约一分钟,即使我正在使用它时,也很早就会超时。
最初,我有这些设置:
SESSION_COOKIE_AGE=1800
SESSION_EXPIRE_AT_BROWSER_CLOSE=True
我认为问题可能是我的会话存储配置错误,所以我尝试通过添加以下内容来配置我的会话存储在本地内存中:
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
CACHE_BACKEND = 'locmem://'
然而,问题仍然存在。是否存在其他会导致管理员会话提前超时的情况,即使用户处于活动状态也是如此?
答案 0 :(得分:3)
locmem://中的缓存会话意味着每当python进程重新启动时都会丢失会话。如果您在开发服务器下运行,则可以在任何时候保存文件。在生产环境中,这将根据您的基础结构而变化 - 例如,apache中的mod_wsgi将在一定数量的请求(高度可配置)之后重新启动python。如果您配置了多个python进程,那么只要您的请求进入不同的进程,您就会丢失会话。
此外,如果生产环境中有多台服务器,locmem://只会引用一个服务器进程。
换句话说,不要将locmem://用于会话存储。