0

私の竜巻アプリケーションでは、データベースにアクセスしてデータを要求するユーザーがいます。私のアプリケーションはこのデータからリアルタイム分析を行っているため、各クライアントは非常に長い時間データベースに接続します。したがって、これによりアプリケーションがブロックされますか?

AsyncMongo を使用すると、この問題が解決され、アプリケーションがブロックされなくなりますか? 同時ユーザーにアプリケーションを使用してもらいたいですか? そうしないと、各クライアントがアプリを使用している間、数分間ブロックされる可能性があります。

クライアントをサーバーの mongodb に接続するハンドラーは websocket です。

@web.asynchronous gen デコレータも使用しますか? それとも、マルチプロセッシングを使用する方が良いですか?

私はこれに非常に慣れていないので、どちらの経験もありませんが、ピックアップして実装するのが最も簡単なものを探していますか?

いくつかの例/チュートリアル コードを確認できれば幸いです。

ありがとう

4

1 に答える 1

2

>アプリケーションをブロックしますか?

おおよそ、アプリケーションがブロックされる原因は、使用しているフレームワークにあります。Django がブロックしています。トルネードはノンブロッキングです。

>非同期モンゴ

これは Async db ドライバーですが、古くてしばらく更新されていません。これを使用すると、DB 呼び出しが非同期になります。しかし、同期 PyMongoは第 10 世代の人々によって維持されており、クエリが迅速に返されることを確認するため、同期PyMongoを使用する方が良いかもしれません。Motorと呼ばれる Python 用の新しい実験的な非同期ライブラリがあります。

>@web.asynchronous gen デコレータも

gen は、非同期クエリを読みやすくする方法です。マルチプロセッシングとは関係ありません

>アーキテクチャとブロッキング

データの読み取りとクライアントへのフィードバックを続けると、ブロックされます。また

  1. 竜巻を使わない
  2. アーキテクチャを変更して、接続が開かれたままにならないようにする
  3. AsyncMongo や Motor などの非同期ドライバーを使用する
于 2012-11-15T12:58:19.203 に答える