Django中请求之间的共享对象
我正在使用Python模块(PyCLIPS)和Django 1.3。
我想开发一个线程安全类,该类可实现对象池和Singleton模式,并且还必须在Django中的请求之间共享。
例如,我要执行以下操作:
- 请求从池中获取具有某些ID的对象,对其进行处理,然后将其推回池中,然后发送带有对象ID的响应。
- 另一个具有对象ID的请求从池中获取具有给定ID的对象,并重复上述请求中的步骤。
- 但是对象的状态必须在服务器运行时保留在池中时保持。
它应该像Java
EE中的Singleton
Session
Bean
我应该怎么做?有什么我应该读的书吗?
更新: 我无法将池中的对象存储在数据库中,因为这些对象是用C语言编写的库下的包装器,C语言是Expert System Engine
CLIPS的API 。
谢谢!
-
好吧,我认为这里需要一个不同的角度。Django与Java不同,该解决方案应针对多进程环境(而不是多线程环境)量身定制。
Django没有单例会话bean的立即等效项。
就是说,我认为您的描述不适合经典的数据库模型。您要保存每个对象的数据,该数据应始终存储在DB层中。
否则,您总是可以在会话中保存内容,Django为登录用户和匿名用户都提供了这些内容-请参阅Django会话中的文档。
考虑到运行Java Web容器与Python / Django多进程环境之间的巨大差异,使用Java环境中可能熟悉的任何其他模式最终都会失败。
编辑:
好吧,考虑到这些对象不是您的应用程序固有的,而是通过第三方库访问的,这确实使事情变得复杂。我的直觉是,这些对象不应由Web层处理,而应由可以从多进程环境访问的某种外部服务处理。正如Daniel所提到的,您始终可以将它们扔到缓存中(如果所说的对象是可腌制的)。但是,感觉这些对象似乎不属于Web层。