Migrar para o PyMongo async
Nesta página
Importante
O driver PyMongo Async é experimental e não deve ser usado em ambientes de produção. Classes, métodos e comportamentos descritos neste guia podem mudar antes da versão completa. Se você encontrar algum problema com o PyMongo Async, saiba como denunciá-lo na página Problemas e ajuda.
Visão geral
O driver PyMongo Async é 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 do PyMongo Async.
Migrar do Motor
O driver PyMongo Async 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 o PyMongo Async 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 o PyMongo Async:
# Motor client import from motor.motor_asyncio import AsyncIOMotorClient # PyMongo Async client import from pymongo import AsyncMongoClient
Para ver uma lista dos métodos assíncronos disponíveis no driver do PyMongo Async, consulte a seção Métodos assíncronos no guia do PyMongo para o PyMongo Async.
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 driver Motor para o PyMongo Async.
Alterações na assinatura do método
As seguintes assinaturas de método do Motor se comportam de forma diferente no driver PyMongo Async:
AsyncMongoClient.__init__()
não aceita um parâmetroio_loop
.AsyncCursor.each()
não existe no driver PyMongo Async.MotorGridOut.stream_to_handler()
não existe no driver PyMongo Async.AsyncCursor.to_list(0)
não é válido no driver PyMongo Async. Em vez disso, useto_list(None)
.MongoClient
é seguro para threads e pode ser usado por muitos threads, mas umAsyncMongoClient
não é seguro para threads e só deve ser usado por um único loop de eventos.
Migrar do PyMongo
O driver PyMongo Async 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 PyMongo Async, 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 PyMongo Async. 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.