gpt4 book ai didi

python - Django 请求之间的共享对象

转载 作者:行者123 更新时间:2023-11-28 19:58:51 33 4
gpt4 key购买 nike

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

我想开发一个线程安全类,它实现了对象池和单例模式,并且还必须在 Django 中的请求之间共享。

例如,我想执行以下操作:

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

它应该像一个 Singleton Session Bean in Java EE

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

更新:我无法将池中的对象存储在数据库中,因为这些对象是用 C 语言编写的库下的包装器,它是 Expert System Engine CLIPS 的 API .

谢谢!

最佳答案

嗯,我认为这里需要换个角度。 Django 不像 Java,解决方案应该针对多进程环境量身定制,而不是多线程环境。

Django 没有直接等同于单例 session bean。

也就是说,我认为您的描述没有理由不符合经典数据库模型。您想要保存每个对象的数据,这些数据应该始终放在 DB 层中。

否则,您始终可以在 session 中保存内容,这是 Django 为登录用户和匿名用户提供的 - see the docs on Django sessions .

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


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

关于python - Django 请求之间的共享对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6927589/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com