Docs 菜单

从Motor迁移到PyMongo Async

重要

PyMongo异步驾驶员是实验性的,不应在生产环境中使用。 在发布完整发布之前,本指南中描述的类、方法和行为可能会发生变化。 如果您在使用PyMongo Async 时遇到任何问题,可以在 问题和帮助页面上学习;了解如何报告这些问题。

PyMongo异步驾驶员是PyMongo和 Motor库的统一。在本指南中,您可以了解将应用程序从Motor迁移到PyMongo异步驾驶员时必须进行的更改。

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 不是线程安全的,只能由单个事件循环使用。

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