从Motor迁移到PyMongo Async
重要
Overview
PyMongo异步驾驶员是PyMongo和 Motor库的统一。在本指南中,您可以了解将应用程序从Motor迁移到PyMongo异步驾驶员时必须进行的更改。
从Motor迁移
PyMongo异步驾驶员的功能与Motor库类似,但由于直接使用Python Asyncio 而不是将工作委托给线程池,因此可以改善延迟和吞吐量。 在大多数情况下,您可以使用 AsyncMongoClient
代替 MotorClient
,并将应用程序的导入语句更改为从 pymongo
导入,从而将现有Motor应用程序直接迁移到PyMongo Async。
以下示例显示了在Motor中与PyMongo Async 中使用客户端进行写入操作的导入差异:
# 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
不是线程安全的,只能由单个事件循环使用。