重要
Overview
PyMongo异步驾驶员是PyMongo和 Motor库的统一。在本指南中,您可以了解将应用程序从PyMongo或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 Async API中可用的异步方法列表,请参阅 异步方法 部分。要学习;了解与PyMongo对应的Motor版本,请参阅兼容性页面。
以下部分介绍了从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不是线程安全的,只能由单个事件循环使用。
从PyMongo迁移
PyMongo异步驾驶员的行为与PyMongo类似,但所有执行网络操作的方法都是协程,必须等待。要从PyMongo迁移到PyMongo Async,您必须通过以下方式更新代码:
将所有使用的
MongoClient替换为AsyncMongoClient。为所有异步方法调用添加
await关键字。如果在函数内部调用异步方法,请将该函数标记为
async。
以下部分介绍如何实现异步API。
异步方法
下表列出了PyMongo异步驾驶员中可用的异步方法。 要调用这些方法,您必须对其进行 await 操作并在 async 函数内进行调用。
客户端方法
方法 | 例子 | |||
|---|---|---|---|---|
| | |||
| | |||
| | |||
| | |||
| | |||
| |
数据库方法
方法 | 例子 | ||
|---|---|---|---|
| | ||
| | ||
| | ||
| | ||
| | ||
| | ||
| | ||
| | ||
| | ||
| |
集合方法
方法 | 例子 | ||
|---|---|---|---|
| | ||
| | ||
| | ||
| | ||
| | ||
| | ||
| | ||
| | ||
| | ||
| | ||
| | ||
| | ||
| | ||
| | ||
| | ||
| | ||
| | ||
| | ||
| | ||
| | ||
| | ||
| | ||
| | ||
| | ||
| | ||
| | ||
| | ||
| | ||
| | ||
| | ||
| |
更多信息
要学习;了解有关异步Python 的更多信息,请参阅Python Asyncio 文档。