0


0

djangoサイトへのデータの送信

多数のクライアントがデータを送信するdjangoサービスを構築しようとしています。 各クライアントは、インターネットに接続されているかどうかに関係なく、認証されたユーザーを表すため、クライアントはデータが集約され、接続が利用可能になったときに送信します。 また、データはローカルに保持して、サーバーにアクセスせずにすばやくアクセスできるようにする必要があります。

データの性質は単純です。 それはゲームの実績と関係があるため、各ユーザーは達成した成果のコレクションを持っています。 その結果、各ユーザーは独自の達成統計を送信し、他のユーザーのデータを編集することはないため、一貫性の問題はありません。

これに最適な媒体を見つけようとしています。 私が最初に考えたのは、djangoサーバーが処理するPOST HTTP要求です。 Pythonクライアントは、これらのリクエストを実行することでログインし、データを「送信」します。 誰もがより良い代替案を提案したり、このセットアップが適しているかどうかの理由を教えてもらえますか?

また、クライアント側からデータを取得するための形式/方法について何を提案するのかを知りたいです。 私はjsonまたはyamlを考えていました

編集2:この質問は、S.Lottの推奨後に改訂されました。

3 Answer


2


Pistonのような多くの人々がこのために。

私たちは独自に展開しました(ピストンはまだ公開されていませんでした)。 はい、DjangoでJSONペイロードを使用してRESTful POSTリクエストを簡単に処理できます。 しかしながら…​ メソッド(GET、POST、PUT、またはDELETE)に基づいたビュー関数へのディスパッチはDjangoの一部ではないため、RESTの処理は一般的に苦痛です。 独自のメソッドベースのディスパッチャを展開できますが、長期的には、独自のソリューションに不満を感じるでしょう。

ピストンは「余分なオーバーヘッド」ではありません。 あなたが説明しているのは、実際には単純ではありません。 ピストンはこのための適切なオーバーヘッドです。

'' '' '

「これらの呼び出しをローカルデータベースに集約し、それらをサーバーと同期するクライアント。」複雑すぎます。

これらのイベントが考えられないほど大きな速度(1秒あたり100回)で発生する場合、mod_wsgiを介して複数のDjangoバックエンドを実行するマルチプロセスApacheフロントエンドが必要になります。

ただし、中央のデータベースに同期するクライアントを持つのは複雑すぎます。 クライアントが必要のないときにアプリケーションを2回実行したため、クライアントがデータを収集してクラッシュしたり、クライアントが2回同期したりすることに関して、未解決の質問が多すぎます。 「データベースの同期」に関する問題が多すぎます。 避けてください。


0


「xmlrpc」はこれに対する有効なソリューションになると思います。 例は次のとおりです。http://code.djangoproject.com/wiki/XML-RPCサーバーもいくつかのサービスを提供するため、職場で使用し、かなりうまく機能しています。


0


角度付きのDjango Rest Frameworkを試してください。

Django / Django Restをバックエンドとして使用できます。

フロントエンドの場合、angularまたはreact.jsをnodejsまたはpython simplehttpサーバーまたはgruntまたはgulpで実行できます。

したがって、フロントエンドはdjangoサーバーと通信してデータを取得します。 ログインには、認証トークンとアンギュラーCookieを使用できます。

また、バックエンドはhtml / templatesを提供する必要がないため、バックエンドサーバーの負荷も減少します。