我正在實現一個非常輕量級的Web項目,它只有一個頁面,在圖表中顯示數據。我使用Django作爲Web服務器,並使用d3.js作爲此圖的繪圖例程。正如你可以想象的那樣,Django服務器只有幾個簡單的時間序列,所以我想知道我是否可以在RAM中保存這個變量。我的第一個試驗陽性,我在我的views.py是這樣的:django vars in ram
X = np.array([123,23,1,32,123,1])
@csrf_exempt
def getGraph(request):
global X
return HttpResponse(json.dumps(X))
通知,X
被另一個功能飄飛更新,但所有用戶的訪問是隻讀的。我必須處理
- 安全問題通過定義一個全局變量?
- 一般的不一致?
我發現a thread討論Django中的全局變量,但在這種情況下,難點在於處理多個寫入訪問。
要回答潛在的問題,爲什麼我不想在數據庫中存儲數據:我在我的X
中獲得的所有數據都已存儲在一個巨大的遠程數據庫中,並且此Web應用程序只需顯示數據。
作爲Django社區的成員,我不一定會說「不要」 - 我已經做了幾件非常類似的事情。但是,對於緩存後端而言,這是解決此問題的更好方法。 – 2012-08-14 11:26:48
@Joe我試過了,它對正常的http請求工作正常,但是當我通過AJAX調用它時,它沒有被緩存。我猜,Django認爲每一個'AJAX'請求都與之前的不同,並再次計算'X'。如何處理?但是,再次感謝,推薦Django緩存系統 - 它似乎比全球變化更優雅 – 2012-08-14 13:16:10
不介意!我通過使用'低級高速緩存API'解決了這個問題。這很完美。非常感謝 – 2012-08-14 13:27:11