django vars in ram

时间:2012-08-14 09:48:47

标签: 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))

请注意,X偶尔会被另一个函数更新,但所有用户访问权限都是只读的。我必须处理

  1. 通过定义全局变量来解决安全问题?
  2. 一般不一致?
  3. 我发现a thread讨论了Django中的全局变量,但在这种情况下,难点在于处理多个写访问。

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

1 个答案:

答案 0 :(得分:2)

将它存储在变量中确实会产生线程影响(以及可扩展性 - 如果你有两个运行相同应用程序的Django服务器会怎么样?)。 Django社区的建议是!。

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

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

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


1 或只是'内置内存后端',我无法抗拒