20

必要なデータをすべて取得するために、10 ~ 20 回のデータベース クエリを実行する Web ページがあります。

通常、クエリが送信された後、Django スレッド/プロセスは結果が返されるのを待ってブロックされ、次のクエリに到達するまで実行を再開します。

データベース サーバーで並列に処理できるように、すべてのクエリを非同期に発行する方法はありますか?

MySQL を使用していますが、他のデータベースのソリューションについても知りたいです。たとえば、Postgresql には非同期クライアント ライブラリがあると聞きましたが、この場合はどのように使用すればよいでしょうか?

4

3 に答える 3

5

このごく最近のブログ エントリは、django または rails フレームワークのいずれにも組み込まれていないことを暗示しているようです。私はそれが問題をよくカバーしていて、コメントと一緒に読む価値があると思います.

http://www.eflorenzano.com/blog/post/how-do-we-kick-our-synchronous-addiction/(リンク切れ)

Cal Henderson が素晴らしいスピーチのどこかでこの欠点について言及したことを覚えていると思いますhttp://www.youtube.com/watch?v=i6Fr65PFqfk

私の素朴な推測では、別の python ライブラリを使用して何かをハックできるかもしれませんが、django が提供する ORM/テンプレートの遅延評価の多くを失い、別のスタックを使用することもできます。繰り返しになりますが、大規模な django プロジェクトでいくつかのビューのみを最適化する場合は、問題ない可能性があります。

于 2010-02-12T06:54:55.757 に答える
4

同様の問題があり、javascript/ajaxで解決しました

テンプレートに基本的なマークアップをロードし、いくつかの ajax リクエストを実行してクエリを実行し、データをロードするだけです。ローディングアニメーションを表示することもできます。ユーザーは、暗いページの読み込みではなく、Web 2.0 の感覚を得ることができます。もちろん、これはページごとにさらにいくつかの HTTP リクエストを意味しますが、決定するのはあなた次第です。

私の例は次のようになります。http://artiox.lv/en/search?query=test&where_to_search=all(リンク切れ)

于 2011-04-19T12:42:25.763 に答える
1

Celeryを試してみてください。サーバーを実行しなければならないというオーバーヘッドが少しありampqますが、それはあなたが望むことをするかもしれません. DBの同時実行性についてはわかりません。また、DB の速度が必要な場合は、 MongoDBをお勧めします (ただしdjango-nonrel、そのためには必要になります)。

于 2011-04-19T06:56:29.327 に答える