Visão geral
O driver é uma unificação do PyMongo e da biblioteca Motor. Neste guia, você pode identificar as alterações que deve fazer para migrar um aplicação do PyMongo ou Motor para o driver .
Migrar do Motor
O driver funciona de forma semelhante à biblioteca Motor, mas permite latência e taxa de transferência aprimoradas devido ao uso direto do Python Asyncio em vez de delegar trabalho a um pool de threads. Na maioria dos casos, você pode migrar diretamente os aplicativos Motor existentes para usando AsyncMongoClient
no lugar de MotorClient
e alterando as declarações de importação do aplicativo para importar de pymongo
.
O exemplo a seguir mostra a diferença nas importações para usar um cliente para operações de leitura e escrita no Motor em comparação com:
# Motor client import from motor.motor_asyncio import AsyncIOMotorClient # client import from pymongo import AsyncMongoClient
Para ver uma lista dos métodos assíncronos disponíveis no driver, consulte a seção Métodos assíncronos no guia do PyMongo para .
A seção a seguir mostra as alterações na assinatura do método que você deve implementar em seu aplicação ao migrar do Motor para o driver.
Alterações na assinatura do método
As seguintes assinaturas de método do Motor se comportam de forma diferente no driver:
AsyncMongoClient.__init__()
não aceita um parâmetroio_loop
.AsyncCursor.each()
não existe no driver.MotorGridOut.stream_to_handler()
não existe no driver.AsyncCursor.to_list(0)
não é válido no driver. Em vez disso, useto_list(None)
.MongoClient
é thread seguro e pode ser usado por muitos threads, no entanto, umAsyncMongoClient
não é seguro para threads e deve ser usado apenas por um único loop de eventos.
Migrar do PyMongo
O driver se comporta de forma semelhante ao PyMongo, mas todos os métodos que executam operações de rede são corrotinas e devem ser aguardadas. Para migrar do PyMongo para o , você deve atualizar seu código das seguintes maneiras:
Substitua todos os usos de
MongoClient
porAsyncMongoClient
.Adicione a palavra-chave
await
a todas as chamadas de método assíncrono.Se você chamar um método assíncrono dentro de uma função, marque a função como
async
.
As seções a seguir descrevem como implementar a API assíncrona.
Métodos assíncronos
As tabelas a seguir listam os métodos assíncronos disponíveis no driver . Para chamar esses métodos, você deve await
e chamá-los dentro de uma função async
.
Métodos do cliente
Método | Exemplo | |||
---|---|---|---|---|
|
| |||
|
| |||
|
| |||
|
| |||
|
| |||
|
|
Métodos do banco de dados
Método | Exemplo | ||
---|---|---|---|
|
| ||
|
| ||
|
| ||
|
| ||
|
| ||
|
| ||
|
| ||
|
| ||
|
| ||
|
|
Métodos de collection
Método | Exemplo | ||
---|---|---|---|
|
| ||
|
| ||
|
| ||
|
| ||
|
| ||
|
| ||
|
| ||
|
| ||
|
| ||
|
| ||
|
| ||
|
| ||
|
| ||
|
| ||
|
| ||
|
| ||
|
| ||
|
| ||
|
| ||
|
| ||
|
| ||
|
| ||
|
| ||
|
| ||
|
| ||
|
| ||
|
| ||
|
| ||
|
| ||
|
| ||
|
|
Informações adicionais
Para saber mais sobre Python assíncrono, consulte a documentação do Python Asyncio.