在django用户之间共享对象

时间:2015-02-03 06:15:39

标签: python django

我有一个应用程序和一个数据库。该应用程序最初是用python编写的,没有django。似乎问题在于它与数据库建立了太多连接并且减慢了速度。我想要做的是加载将在python字典中使用的任何数据,然后与每个人共享该对象(类似单线对象)。 django似乎做的是每次发出新请求时创建一个新的应用程序实例。如何让它共享相同的加载数据?

3 个答案:

答案 0 :(得分:1)

您可以使用任何快速键值存储(例如memcachedLevelDB)在应用程序实例之间共享对象。您可以使用JSON来序列化和反序列化这些对象。

答案 1 :(得分:1)

与您的断言相反,Django不会对每个请求重新初始化。实际上,Django为许多请求进行处理,并且在模块级别定义的任何内容都将在该进程处理的所有请求之间共享。这通常是导致线程安全漏洞的原因,但在您的情况下正是您想要的。

当然,网站通常会同时运行多个进程,并且无法在它们之间共享对象。此外,由服务器决定要生成多少进程以及何时回收它们。但是,对于您的用例,每个进程的一个对象实例化优于每个请求一个。

答案 2 :(得分:0)

你不需要任何魔法来在python中做类似单身的对象。只需在django项目中编写模块,例如shared.py。将字典初始化放在此处并从任何地方导入。