5

私は非常に軽量な Web プロジェクトを実装しています。この Web プロジェクトには 1 ページしかなく、データをダイアグラムに表示しています。この図では、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. 一般的に矛盾?

Django のグローバル変数について議論しているスレッドを見つけましたが、その場合、複数の書き込みアクセスを処理することが困難です。

データベースにデータを保存したくない理由についての潜在的な質問に答えるには: 取得したすべてのデータXは既に巨大なリモート データベースに保存されており、この Web アプリはデータを表示するだけで済みます。

4

1 に答える 1

2

それを変数に格納することには、実際にスレッド化の影響があります (また、スケーラビリティーも同様です。同じアプリを実行している 2 つの Django サーバーがある場合はどうなるでしょうか?)。Django コミュニティからのアドバイスは、やめてください! です。

ただし、これは Django キャッシュ システムに適しているように思えます。getGraphビューをキャッシュするだけ@cache_pageで、仕事は完了です。memcache を使用する必要はありません。組み込みのメモリ内メモリ キャッシュ キャッシュ バックエンド*が正常に動作します。キャッシュのタイムアウトとして非常に大きな数値を設定します (年)。

このようにして、X の値ではなく HTTP 応答 (JSON) を格納しています。しかし、コード サンプルから、それは問題ではありません。X を再計算する必要がある場合は JSON を再計算する必要があり、JSON を再計算する必要がある場合は X を再計算する必要があります。

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


1または単に「組み込みメモリ バックエンド」、私は抵抗できませんでした

于 2012-08-14T10:51:00.467 に答える