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 de 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 na API assíncrona do PyMongo, consulte a seção Métodos assíncronos . Para saber mais sobre as versões do Motor que correspondem ao PyMongo, consulte a página de compatibilidade.
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é thread seguro e pode ser usado por muitos threads, no entanto, umAsyncMongoClientnão é seguro para threads e deve ser usado apenas 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
MongoClientporAsyncMongoClient.Adicione a palavra-chave
awaita 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.