0

私は単純にするためにtornadoを使用しており、Pymongoで使用しているので、多くのクライアントにサービスを提供するために非同期呼び出しについて常に耳にするので、データベースへの実際の非同期呼び出しとは何かを尋ねていたので、このコード例えば:

たとえば、ユーザーが検索する領域が4つあるページを想定すると、結果は4つの結果になります。

A = calls the database to search for an element a.
B = calls the database to search for an element b.
C = calls the database to search for an element c.
D = calls the database to search for an element d.
then render a pages where a user will see the results (a,b,c,d)

したがって、これはサーバーにとってキラーになります。4つのリクエストすべてが完了するまで待機するか、最初の結果を提供してから、データベース呼び出しがブロックされている場合でも待機し、すべての結果に参加するバケットを作成する必要があるためです。クライアントに提供されますか?または、4つの操作の分割は、非同期データベースライブラリ(MotorやAsyncmongoなど)を使用して実行する必要がありますか?

4

1 に答える 1

1

PyMongoを呼び出すたびに、TornadoのIOLoopがブロックされ、PyMongoメソッドが完了するまでクライアントHTTPリクエストがそれ以上処理されなくなります。

http://api.mongodb.org/python/current/faq.html#does-pymongo-support-asynchronous-frameworks-like-gevent-tornado-or-twisted

于 2012-09-26T15:37:59.880 に答える