从Motor迁移到PyMongo异步
重要
PyMongo异步驱动器是实验性的,不应在生产环境中使用。本指南中描述的类、方法和行为可能在完整发布之前更改。如果您在使用PyMongo异步时遇到任何问题,您可以在问题与帮助页面了解如何报告它们。
概述
PyMongo 异步驱动器是 PyMongo 和Motor 库的统一。在本指南中,您可以识别出将应用程序从 Motor 迁移到 PyMongo 异步驱动器所需进行的更改。
从 Motor 迁移
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 文档。