文档菜单
文档首页
/ / /
PyMongo

从Motor迁移到PyMongo异步

本页内容

  • 概述
  • 从Motor迁移
  • 方法签名更改
  • 附加信息

重要

PyMongo异步驱动器是实验性的,不应在生产环境中使用。本指南中描述的类、方法和行为可能在完整发布之前更改。如果您在使用PyMongo异步时遇到任何问题,您可以在问题与帮助页面了解如何报告它们。

PyMongo 异步驱动器是 PyMongo 和Motor 库的统一。在本指南中,您可以识别出将应用程序从 Motor 迁移到 PyMongo 异步驱动器所需进行的更改。

PyMongo 异步驱动器与 Motor 库功能相似,但由于直接使用 Python Asyncio 而不是委托工作到线程池,因此可以实现更好的延迟和吞吐量。在大多数情况下,您可以通过使用AsyncMongoClient来替代MotorClient,并将应用程序的导入语句更改为从pymongo导入,直接将现有的 Motor 应用程序迁移到 PyMongo 异步驱动器。

以下示例显示了在 Motor 和 PyMongo 异步中用于读取和写入操作客户端导入的差异

# Motor client import
from motor.motor_asyncio import AsyncIOMotorClient
# PyMongo Async client import
from pymongo import AsyncMongoClient

要查看 PyMongo 异步驱动器中可用的异步方法列表,请参阅 PyMongo 到 PyMongo 异步指南中的异步方法部分。

以下部分显示了在从 Motor 迁移到 PyMongo 异步驱动器时,您必须在应用程序中实现的方法签名更改。

以下 Motor 方法签名在 PyMongo 异步驱动器中的行为不同

  • AsyncMongoClient.__init__() 不接受 io_loop 参数。

  • AsyncCursor.each() 在 PyMongo 异步驱动程序中不存在。

  • MotorGridOut.stream_to_handler() 在 PyMongo 异步驱动程序中不存在。

  • AsyncCursor.to_list(0) 在 PyMongo 异步驱动程序中无效。请使用 to_list(None) 代替。

  • MongoClient 是线程安全的,可以被多个线程使用,然而,AsyncMongoClient 不是线程安全的,应该只由单个事件循环使用。

要了解更多关于异步 Python 的信息,请参阅 Python Asyncio 文档。

返回

升级