如何在两个不同的http请求之间共享一个dict

时间:2012-08-17 02:58:15

标签: python django shared-memory

Django应用程序将数据从文件加载到Python dict,处理它并将其作为http响应发送。现在说在Web服务器上收到n个请求,然后这个Django应用程序将运行n次并将数据从文件加载到Python dict n次。我想知道,如果可以提供n http响应,我可以以某种方式将这些数据加载到dict中。

问题情况的示例view.py文件可以如下:

from django.http import HttpResponse
from django.http import HttpRequest

def hello(request):
    data = open("abc").readlines()
    return HttpResponse(data[0])

3 个答案:

答案 0 :(得分:4)

将字典绑定到全局名称将使其在Django项目运行时保持不变。请注意,每个Django进程(一些WSGI容器,例如mod_wsgi,可以为应用程序运行多个进程)将拥有自己的独立字典副本。

答案 1 :(得分:4)

如果数据与用户相关,您可以使用djanog的session framework在请求之间保留数据。如果需要在众多用户之间共享数据,则可以使用cache

答案 2 :(得分:3)

这是Django Middleware的工作。将其添加到您的设置中,它将在您的请求中保留。它是一个更好的选择,然后是持久性,绝对比使用全局对象好很多。

中间件是Django请求/响应处理的钩子框架。它是一个轻巧的低级“插件”系统,用于全局改变Django的输入和/或输出。每个中间件组件负责执行某些特定功能。例如,Django包含一个中间件组件XViewMiddleware,它为每个对HEAD请求的响应添加“X-View”HTTP标头。