django vars in ram

Mil*_*ell 5 python django global-variables

我正在实现一个非常轻量级的Web项目,它只有一个页面,在图表中显示数据.我使用Django作为Web服务器,并使用d3.js作为此图的绘图例程.你可以想象,只有一些简单的时间序列必须由Django服务器响应,所以我想知道我是否可以在ram中保存这个变量.我的第一个测试是积极的,我的views.py中有类似的东西:

X = np.array([123,23,1,32,123,1])

@csrf_exempt
def getGraph(request):
    global X
    return HttpResponse(json.dumps(X))
Run Code Online (Sandbox Code Playgroud)

注意,X不时被另一个函数更新,但所有用户访问都是只读的.我需要处理吗?

  1. 通过定义全局变量来解决安全问题?
  2. 一般的不一致?

我在Django中找到了一个讨论全局变量的线程,但在这种情况下,难点在于处理多个写访问.

回答关于为什么我不希望在数据库中存储数据的潜在问题:我在我的所有数据X已经存储在一个巨大的远程数据库中,这个Web应用程序只需要显示数据.

Joe*_*Joe 2

将其存储在变量中确实会产生线程影响(还有可扩展性 - 如果您有两个 Django 服务器运行同一个应用程序怎么办?)。Django 社区的建议是不要这样做

不过,这听起来很适合 Django 缓存系统。只需缓存您的getGraph视图@cache_page即可完成工作。无需使用memcache,内置内存内存缓存缓存后端*即可正常工作。将一个非常高的数字作为缓存的超时(年)。

这样,您将存储 HTTP 响应 (JSON),而不是 X 的值。但从您的代码示例来看,这不是问题。如果需要重新计算X,则需要重新计算JSON,如果需要重新计算JSON,则需要重新计算X。

https://docs.djangoproject.com/en/dev/topics/cache/?from=olddocs/


1或者只是“内置内存后端”,我无法抗拒