我在我的应用程序中有一个奇怪的
django会话错误:有时(大约10次,每天约20000)用户的会话信息被删除.我通过日志文件跟踪它:在页面A,有用户会话的信息,在提交表单后,在下一页他的会话为空.我尝试了两种类型的存储:memcached db和db,这个问题适用于它们.我尝试重现这些场景,但是正如我所说,所有这些都按预期工作,这种情况非常罕见.我还检查了这个问题是否存在于不同的用户,并且对于它们来说每次都不会重现.我没有任何想法如何找到根本原因,我不知道在这里发布什么作为描述.如果有人有任何想法,请告诉我.如果它很重要,我正在使用django 1.2 FastCGI运行我的应用程序.
谢谢!
谢谢!
UPD:我检查并看到在两个连续请求期间,使用的会话密钥没有改变,首先请求有一个实际的会话状态,而在第二个会话变量与空相关.
解决方法
作为调试此问题的一种方法,我将继承标准Django会话中间件(或您当前使用的任何内容):
django.contrib.sessions.middleware.SessionMiddleware
并在一些额外的日志记录中包装process_request和(可能更重要的)process_response.然后在MIDDLEWARE_CLASSES中安装子类会话中间件,而不是Django库存.
您还可以通过尝试读取它来验证session.save()是否已实际提交了更改.可能问题在于会话状态序列化,并且它在您尝试存储的特定键或值上失败.
这些都无法解决您的问题,但它可以帮助您确定正在发生的事情.