1

少し裏話として、メッシュネットワークからのパケットデータに基づいてKMLをgoogleearthにパイプするアプリケーションに取り組んでいます。例:

UDPパケット--->DBに整理されたデータを配置するためのDjangoORM---> DBを読み取り、パケットデータ(gps、接続など)のKML表現をGoogleEarthに返すためのDjangoビュー。

ここでの問題は、DB行がストーリーを伝え、クエリまたは一連のクエリを実行するだけでは、このメッシュネットワークの「絵を描く」のに十分ではないということです。リクエスト/レスポンス間のネットワークの「状態」を維持するために、いくつかの内部python構造とクラスを保持する必要があります。

ここが私が助けを必要としているところです。現在、この「状態」を保持するために、Djangoの低レベルキャッシュAPIを使用して、無制限のタイムアウトでクラスを保存しています。そして、すべてのリクエストで、キャッシュからそのクラスを取得し、その構造に追加して、キャッシュに保存し直します。これは機能しているようで、実際にはかなりうまくいっています。しかし、それは正しく感じられません。

たぶん、Djangoを捨てて、PythonのBaseHTTPクラスを拡張して、リクエスト/レスポンスを処理する必要がありますか?

たぶん、「状態」を保持するために別のアプリケーションを作成する必要があり、Djangoはソケットを介してデータを要求しますか?

Djangoを誤用していて、重要なデータで安全ではないような気がします。そして助けますか?

私はこれが型破りで少しクレイジーであることを知っています。

(注:現在、UDPソケットリスナーにDjangoインスタンスの外部でDjangoのORMを使用しているため、インスタンスの外部でDjangoの環境を使用できることを認識しています。)

4

2 に答える 2

3

Django を捨てて、Python の BaseHTTP クラスを拡張して、リクエスト/レスポンスを処理する必要があるのではないでしょうか?

Django for Python の BaseHTTP を捨てても、HTTP がステートレス プロトコルであり、それに状態を追加したいという事実は変わりません。キャッシュのバックエンドによっては、キャッシュに状態を保存することが多少不安定であることは間違いありません。これをキャッシュではなくセッションに切り替えることができます。

「状態」を保持するために別のアプリケーションを作成し、ソケットを介してデータを要求する Django パイプを作成する必要があるのではないでしょうか?

はい、これは実行可能なオプションのようです。ここでも HTTP はステートレスなので、状態が必要な場合はどこかに永続化する必要があり、DB はこれを保存できる別の場所です。

于 2012-08-03T14:46:12.940 に答える
1

これは、Redis と MongoDB が効率的に処理できるように作られているようなストレージの問題のように思えます。パケット データを追跡するための適切なデータ構造と、起動するための安価でアトミックな更新を作成するための対応するサポートを見つけることができるはずです。

于 2012-08-03T14:49:27.020 に答える