我正在处理一个 Django 1.2.3 项目,我发现管理 session 似乎很早就超时了,在登录后大约一分钟后,即使我正在使用它也是如此。
最初,我有这些设置:
SESSION_COOKIE_AGE=1800
SESSION_EXPIRE_AT_BROWSER_CLOSE=True
我认为问题可能是我的 session 存储配置错误,所以我尝试通过添加将我的 session 配置为存储在本地内存中:
SESSION_ENGINE = "django.contrib.sessions.backends.cache"
CACHE_BACKEND = 'locmem://'
但是,问题还是出现了。即使用户处于事件状态,是否还有其他原因会导致管理 session 提前超时?
请您参考如下方法:
在 locmem://中缓存 session 意味着只要 python 进程重新启动,您就会丢失 session 。如果您在开发服务器下运行,那将是您保存文件的任何时间。在生产环境中,这将根据您的基础架构而有所不同 - 例如,apache 中的 mod_wsgi 将在一定数量的请求后重新启动 python(这是高度可配置的)。如果您配置了多个 python 进程,那么只要您的请求转到不同的进程,您就会丢失 session 。
更重要的是,如果你在生产环境中有多个服务器,locmem://将只引用一个服务器进程。
换句话说,不要使用 locmem://进行 session 存储。
