对象不会在Apache下的Django会话中持久存在

时间:2010-01-29 19:30:07

标签: django object session

设置:

  • Django 1.0
  • 默认会话(db,no caching)
  • apache 2.2,mod_python,prefork,5个进程

我想做什么:

  • 初始化一个新对象(自定义类,几个dicts作为成员变量,一些方法)
  • 将其保存在会话中。
  • 从多个后续请求中使用该对象

问题:

  • 创建对象的进程会在后续请求中存储和访问该对象而不会出现问题。
  • 其他进程从会话中获取对象,但该对象的成员变量不同。其中一个在原始流程中有数据的词组在其他流程中是空的
  • 有问题的dict有几个级别,但只有值(没有引用我所知道的内存中对象)

我有一个狡猾的解决方法,但我真的很想知道这里发生了什么。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

确保您的对象为picklable

答案 1 :(得分:1)

Django Book建议不要在会话中存储对象。问题是,如果您的对象发生更改,例如数据库模型发生更改,会话数据不会更改,这可能会导致错误。