Migrar do Motor para o PyMongo Async
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 deajuda .
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 Motor para o driver 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
é 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.
Informações adicionais
Para saber mais sobre Python assíncrono, consulte a documentação do Python Asyncio.