私は実際に軽量のWebプロジェクトを実装しています。これは1ページしかなく、図にデータを表示しています。私はWebサーバーとしてDjangoを使用し、この図のプロットルーチンとしてd3.jsを使用します。あなたが想像することができるように、Djangoサーバが応答しなければならない単純な時系列がいくつかありますので、私はこの変数をramに保持することができないのだろうかと思いました。私の最初のテストは、私は私のviews.pyにこのようなものを持っていた、陽性であった:ram内のdjango vars
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コミュニティの一員として、私は必ずしも「しない」とは言えません。しかし、キャッシュバックエンドの+1は、この問題を解決するもっと良い方法です。 –
@Joeこれを試してみましたが、通常のhttpリクエストでうまく動作しますが、 'AJAX'で呼び出すとキャッシュされません。私は、Djangoはすべての単一の 'AJAX'要求が前のものと異なっているとみなし、' X'を再度計算します。それに対処する方法?しかし、おかげで、再びDjangoのキャッシュシステムを推薦しました - それはグローバルバースよりもかなりエレガントであるようです –
気にしないでください!私は 'The low-level cache API'を使って解決しました。それはちょうど完璧です。どうもありがとう –