当前位置: 首页 > 面试题库 >

Django中请求之间的共享对象

王飞英
2023-03-14
问题内容

我正在使用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层。



 类似资料:
  • 我在Spring控制器的2个webservice中使用了相同的ArrayList,所以我想使用请求或会话范围从DB中获取一次,我尝试制作一个bean } 在控制器中 application context CTX = new AnnotationConfigApplicationContext(example bean。类);AttendeesBean attendee bean = CTX .

  • 问题内容: 我有一个关于JAX-RS的非常基本的问题,但我无法以某种方式轻易找到答案。 我正在尝试将使用“标准” Javax servlet的REST服务重构为“手工”将请求路由到方法的“ REST服务”,使其成为“更干净的” JAX- RS实现。当前应用程序在servlet init()期间设置一些变量。它将那些属性分配为HttpServlet类的属性,因此它们在每个doGet()期间都可用,并

  • 在使用Spring Boot编写的rest API上使用基于无状态令牌的身份验证时,我看到了一些奇怪的行为。 客户机在每个请求中都包含一个JWT令牌,我编写的一个自定义过滤器扩展了GenericFilterBean,它使用以下内容将基于令牌中声明的身份验证对象添加到安全上下文中: 并在处理请求后通过执行以下操作清除上下文: 但是,当我开发的简单应用程序执行一系列操作时,我有时会看到安全上下文设置不

  • 我想验证一个发出请求的用户。为此,我有两个过滤器:AuthenticationFilter和authorizationfilter。AuthenticationFilter从请求中提取令牌并从数据库中查找用户。AuthorizationFilter检查该用户(由上一个筛选器检索)是否具有必要的权限。我有两个可能的解决方案,想知道每一个的利弊,我应该使用哪一个。我还需要访问实际业务逻辑中的用户。我的

  • 问题内容: 我有一些cookie存储在http://sub1.myserver.com中 ,我希望能够在http://myserver.com中看到它们。 问题答案: 我能够使用以下代码来做到这一点:

  • 问题内容: 创建一个Today小部件,我用来保留一些数据。在主应用程序中,我正在使用。这不能由扩展读取(或可以?),这就是为什么我使用构造函数。 用户在主应用程序中持久存储的数据需要在扩展程序中可用。 目前,我坚持两者,以便可以共享这些值 问题是我应该将它们放在一起并仅在我的应用程序中使用,还是这种不好的做法? 编辑:我正在使用一个应用程序组容器。为了澄清起见,我问我是否应该在整个项目中用suit