Docs Menu
Docs Home
/ / /
PyMongo

MotorからPyMongo Async への移行

項目一覧

  • Overview
  • Motorから移行
  • メソッド署名の変更
  • 詳細情報

重要

PyMongo Async ドライバーは実験的なものであり、本番環境では使用しないでください。 このガイドで説明されているクラス、メソッド、および動作は、完全なリリースより前に変更される可能性があります。 PyMongo Async で問題が発生した場合は、 の問題とヘルプ ページでその問題を報告する方法について学びます。

PyMongo Async ドライバーは、 PyMongoと Motorライブラリ の統合です。このガイドでは、アプリケーションをMotorからPyMongo Async ドライバーに移行するために行う必要がある変更を識別できます。

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 ドキュメントを参照してください。

戻る

PyMongo のバージョンをアップグレードする