Django中请求之间的共享对象

Max*_*hin 2 python django

我正在使用Python模块(PyCLIPS)和Django 1.3.

我想开发一个线程安全类,它实现了Object Pool和Singleton模式,并且还必须在Django中的请求之间共享.

例如,我想要做以下事情:

  • 请求从池中获取具有某个ID的对象,对其执行某些操作并将其推回池中,然后使用对象的ID发送响应.
  • 另一个具有对象ID的请求从池中获取具有给定ID的对象,并重复上述请求中的步骤.
  • 但是当服务器运行时,对象的状态必须保留在池中.

它应该像Java EE中的Singleton Session Bean

我应该怎么做?有什么我应该读的吗?

更新: 我无法在数据库中存储池中的对象,因为这些对象是在C语言编写的库下的包装器,C语言是专家系统引擎CLIPS的 API .

谢谢!

Yuv*_*dam 7

好吧,我认为这里需要一个不同的角度.Django不像Java,解决方案应该针对多进程环境而不是多线程环境进行定制.

Django没有立即相当于单例会话bean.

也就是说,我认为你的描述没有理由不适合经典的数据库模型.您希望保存每个对象数据,该数据应始终位于数据库层中.

否则,您可以随时在会话中保存内容,Django为登录用户和匿名用户提供 - 请参阅Django会话上的文档.

考虑到运行Java Web容器和Python/Django多进程环境之间的巨大差异,使用Java环境中您可能熟悉的任何其他模式最终都会失败.


编辑:好吧,考虑到这些对象不是您的应用程序的原生对象而是通过第三方库访问,它确实使事情变得复杂.我的直觉是,这些对象不应该由Web层处理,而是由某种可以从多进程环境访问的外部服务处理.正如丹尼尔所提到的,你总是可以把它们放在缓存中(如果所说的对象是可以腌制的).但感觉好像这些对象不属于Web层.