MotorからPyMongo Async への移行
重要
Overview
PyMongo Async ドライバーは、 PyMongoと Motorライブラリ の統合です。このガイドでは、アプリケーションをMotorからPyMongo Async ドライバーに移行するために行う必要がある変更を識別できます。
Motorから移行
PyMongo Async ドライバーはMotorライブラリと同様に機能しますが、スレッド プールに作業を委任するのではなくPython Asyncio を直接使用するため、レイテンシとスループットの向上が可能です。ほとんどの場合、 MotorClient
の代わりに AsyncMongoClient
を使用し、アプリケーションのインポート ステートメントをpymongo
からインポートするように変更することで、既存のMotorアプリケーションをPyMongo Async に直接移行できます。
次の例は、 Motorでの読み取りおよび書込み (write) 操作にクライアントを使用するためのインポートにおけるPyMongo Async との違いを示しています。
# Motor client import from motor.motor_asyncio import AsyncIOMotorClient # PyMongo Async client import from pymongo import AsyncMongoClient
PyMongo Async ドライバーで使用できる非同期メソッドのリストを表示するには、 PyMongoからPyMongo Async へのガイドの「非同期メソッド」セクションを参照してください。
次のセクションでは、 MotorからPyMongo Async ドライバーに移行するときにアプリケーションに実装する必要があるメソッド署名の変更を示します。
メソッド署名の変更
PyMongo Async ドライバーでは、次のMotorメソッド署名の動作が異なります。
AsyncMongoClient.__init__()
はio_loop
パラメータを受け入れません。AsyncCursor.each()
はPyMongo Async ドライバーには存在しません。MotorGridOut.stream_to_handler()
はPyMongo Async ドライバーには存在しません。AsyncCursor.to_list(0)
はPyMongo Async ドライバーでは有効ではありません。 代わりにto_list(None)
を使用してください。MongoClient
はスレッドセーフであり、多くのスレッドで使用できますが、AsyncMongoClient
はスレッドセーフではないため、単一のイベントループでのみ使用する必要があります。
詳細情報
非同期Pythonの詳細については、 Python Asyncio ドキュメントを参照してください。